似乎无法解决此Angular和UI-Router问题。我试图为我的Angular应用程序设置自定义404页面,但是在Angular抛出错误而不是处理路径的边缘情况。
我的网址是:/**
* Sets {@code value} to the first {@link Field} in the {@code object} hierarchy, for the specified name
*/
public static void setField(Object object, String fieldName, Object value) throws Exception {
Field field = getField(object.getClass(), fieldName);
field.setAccessible(true);
field.set(object, value);
}
我要求应用程序应该有一个基本路径,因此我使用.NET URL Rewrite将所有流量重定向到正确的位置:
http://www.example.com/
为了完成这项工作,我在HTML主管部分中使用http://www.example.com/app/
标记,如下所示:
<base>
现在我的所有州都使用<base href="/app/">
前缀。
/app/
为了使我的404页面正常工作,我定义了我的最后一个状态来拦截任何无法识别的路径:
$stateProvider
// https://www.example.com/app/
.state('/', {
url: '/',
templateUrl: '/Partials/Pages/Home',
})
// https://www.example.com/app/login
.state('login', {
url: '/login',
templateUrl: '/Partials/Pages/Login',
});
这几乎完美无缺。以下URL返回我的404错误:
// If no state is matched, load the 404 error
$stateProvider.state('404', {
url: '*path',
templateUrl: '/Partials/Pages/PageNotFound',
});
但是,任何不以我配置的基本路径开头的路径都不会重定向到404错误。以下路径返回Angular错误:
https://www.example.com/app/sdfsf
有没有办法处理任何不以我的基本路径开头的网址的错误?
答案 0 :(得分:0)
首先,代码的这一部分存在矛盾:
// For any unmatched url, redirect to home
$urlRouterProvider.otherwise('/');
// If no state is matched, load the 404 error
$stateProvider.state('404', {
url: '*path',
templateUrl: '/Partials/Pages/PageNotFound',
});
您应该做的是定义您的“404&#39;与其他人陈述,否则应该重定向到它:
$stateProvider
// https://www.example.com/app/
.state('/', {
url: '/',
templateUrl: '/Partials/Pages/Home',
})
.state('404', {
url: '/404',
templateUrl: '/Partials/404.html',
});
$urlRouterProvider.otherwise('/');