在我的app.js中我有
$routeProvider
.when('/', {
templateUrl: '/views/main.html'
})
.when('/admin', {
templateUrl: 'views/admin.html',
controller: 'admin',
})
所以我的路由是localhost:3000 /#/而点击按钮就把我带到localhost:3000 /#/ admin 我想从我的网址中删除#,所以我使用了
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
现在localhost:3000/
正在运行,点按按钮就会转到localhost:3000/admin
。
但是,如果我直接在网址中提供localhost:3000/admin
,则表示无法获取/admin ..但如果提供localhost:3000/#/admin
,则会将我带到localhost:3000/admin
。为什么这种行为如何才能我让localhost:3000/admin
工作。可以帮助人
答案 0 :(得分:1)
移动此行
app.use(express.static(path.join(__dirname, 'public')));
app.use(app.router);
之前
在javascripts/app.js
$locationProvider.html5Mode({ enabled: true, requireBase: false });
添加此代码
app.get('*', function(req, res) {
res.render('index', {
title: 'Express'
});
});
app.js
行 http.createServer(app)
中醇>
答案 1 :(得分:0)
您需要使所有这些路由返回相同的HTML和其他资源,以便对给定URL的第一个请求返回正确的HTML。
使用'#'它更容易,因为来自'#' URL的末尾不会在请求中发送到服务器,因此服务器不必做任何事情。
但对于没有'#'整个URL被发送到服务器,因此服务器必须知道要提供什么,并且客户端必须能够加载正确的视图,具体取决于第一页加载中使用的URL。
如果没有提供后端代码,很难说清楚具体内容,但你必须确保:
http://localhost:3000/admin
这样的每个请求,都会返回与http://localhost:3000/
答案 2 :(得分:0)
请更新您的html,如下所示:
在head部分,请使用'base'标签。 所以head标签看起来像是:
<html>
<head>
<base href="/">
</head>
</html>
然后尝试使用网址'localhost:3000 / admin' 如果这有帮助,请告诉我。