【发布时间】:2015-07-02 12:56:41
【问题描述】:
我在路由 /status 和 /status/:id 时遇到了一些问题。我收到“无法获取 /status”错误消息
我写过的角度:
App.config(['$routeProvider', '$locationProvider', function($routeProvider,$locationProvider){
$routeProvider.when('/status', {
templateUrl: 'views/statusList',
controller: 'dailyStatusCtrl'
});
$routeProvider.when('/status/:oldDate', {
templateUrl: 'views/statusList',
controller: 'dailyStatusCtrl'
});
$routeProvider.otherwise({redirectTo: '/'});
$locationProvider.html5Mode(true).hashPrefix('!');
}]);
在 nodejs 方面,我使用了jade 并写过:
server.use(connRoute(function(router){
router.get('/', function (req, res, next){
console.log('/ router');
res.render('index');
});
router.get('/views/:view', function(req, res){
res.render(req.params.view)
});
router.get('status/:id', function (req, res, next){
console.log('status * router');
res.render('index');
});
router.get('*', function (req, res, next){
console.log('** router');
res.render('index');
});
}));
/status/:id 部分是一个测试。但它不起作用。我收到消息:“/status”的“无法获取 /status”,但它适用于“/status/somecontent”。
我的代码有什么问题?如何使用 /status 和 /status/:id ?
如果没有第二个路由器,我会得到“无法获取 /status/somecontent”,但它适用于 /status。
谢谢
编辑 1:
我已将节点中的路线编辑为:
server.use(connRoute(function(router){
router.get('/', function (req, res, next){
res.render('index');
});
router.get('/views/:view', function(req, res, next){
res.render(req.params.view)
});
}));
并添加connect-modrewrite:
server.use(modRewrite([
'^([^.]+)$ /index.html [L]'
]));
但是重写规则是错误的。我不能只重新加载主页 (/)。任何其他页面都不能重新加载。还是顺序有问题?
这是实际的顺序:
server.use(connRoute(function(router){
router.get('/', function (req, res, next){
res.render('index');
});
router.get('/views/:view', function(req, res, next){
res.render(req.params.view)
});
}));
server.use(modRewrite([
'^([^.]+)$ /index.html [L]'
]));
server.use(servStatic(__dirname + '/../logbook'));
对正确的 modRewrite 规则有任何想法吗?
【问题讨论】:
-
如果您以角度路由它,则不需要在服务器端路由它。
-
如果我为 status/:id 删除路由器,我会得到“无法获取 /status/somecontent”。我认为角度的配置还可以。但是在节点中是错误的。我想这与 htmlMode 有关。
-
并且您没有使用
/status或status的路由服务器端 -
您确定
views/statusList存在并呈现您期望的方式吗? -
否,/status 使用 * 路由。它也在加载正确的模板。只有 /status/123 不起作用。
标签: angularjs node.js routes connect