我在写一个使用AngularJS的SPA产品,由使用NodeJS的Express服务。 NodeJS/Express还为SPA提供了API。在生产中,SPA将坐在代理之后(Apache,或者将来可能是nginx) - 即使没有代理,也存在以下问题。 ngRoute用于提供路由。Angular ngRoute重定向到格式不正确的URL
我最初是在本地测试应用程序,一切工作正常。我将repo克隆到测试服务器,但出于某种原因,当我尝试使用该应用程序时,这些URL格式错误。
正常情况下,当页面加载应用程序重定向到localhost:8080/#/home
(home
是全部路径)。但是,在测试服务器上时,它会重定向到domain.com/#!/home#%2Fhome
。
如果我点击一个链接,该链接应该将URL更改为domain.com/#/quotations
(href设置为相对,而不是绝对),我会得到domain.com/#!/home#%2Fquotations
。
我的路由器配置:
app.config(['$routeProvider', function($routeProvider){
// Routes
$routeProvider
.when('/home', {
templateUrl: '/views/home/home.html'
})
.when('/staff', {
templateUrl: '/module/staff/views/staff.html',
controller: 'staffController',
controllerAs: 'staff'
})
.when('/error', {
templateUrl: '/views/error/error.html',
css: '/views/error/error.css'
})
.otherwise({
redirectTo: '/home'
});
}]);
在我的主服务器的NodeJS文件我只使用web.use(Express.static('public_html'))
设置快递服务包含SPA的文件夹public_html
。
我曾尝试将<base href="/">
添加到我的index.html头部,但这没有什么区别。 Angular和Express都没有配置为执行与默认设置不同的任何操作来重写页面URL,所以我对这个问题非常困惑。
是否有可能你正在使用的角度两个不同的库在您的测试和本地服务器?我看到“!”这个字符是1.6 – bhantol