我有一个使用angular-ui $stateProvider
和$urlRouterProver
的角度应用。
我的角度路由器会相应地重定向到我的404状态;
$urlRouterProvider.when('', '/').otherwise('404');
$stateProvider.state('404', {
url: '/404',
templateUrl: 'partials/404.html',
controller: 'PageCtrl'
});
此404的最终网址看起来像http://<snip>.com/#/404
。这非常有效,它处理了与/#/whatever/missing/
匹配的错误网址,但它没有覆盖/wrong/url/
。
根404由nginx&#39; s error_page处理。我尝试了error_page 404
;
error_page 404 /#/404;
location = /#/404 {
root /var/www/<snip>.com/public/;
internal;
}
nginx日志输出:
[error] open() "/var/www/<snip>.com/public/#/404" failed (2: No such file or directory), request: "GET / HTTP/1.1"
并且它没有重定向到有角度的404状态(并且不会更改网址)。
答案 0 :(得分:1)
在仔细阅读并仔细阅读文档后,我们可以直接使用error_page重定向。我的nginx解决方案看起来像这样:
location / {
root /var/www/<nip>.com/public/;
error_page 404 =301 http://<snip>.com/#/404;
}
我不太喜欢重定向解决方案,但它似乎没有用后退按钮打破任何东西,所以我对它没问题。 :)