当导航路径不以<base />路径开头时,Angular 404页面

时间:2016-05-19 19:57:36

标签: javascript angularjs angular-ui-router

似乎无法解决此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 enter image description here

有没有办法处理任何不以我的基本路径开头的网址的错误?

1 个答案:

答案 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('/');