我刚刚继承了代码中有多个ui-sref="portal.main.content"
的应用程序。
我感到困惑的是,要导航到此状态,我们需要输入/#/ portal / main / content。
然而,它在没有#
的页面上呈现。因此,当点击页面时它会起作用,但是如果我尝试打开一个新标签页面并且因为该页面不存在而无法工作。我在这里缺少什么?
答案 0 :(得分:1)
问题来自这样一个事实:您的应用程序是从处理URL的服务器环境提供的,就好像它们是服务器文件系统上真实资源的真实路径一样。因此,当您在单个页面中时,当您导航到另一个状态网址时不会重新加载,因为ui-router
会在内部处理此问题,因此无法生成404
或{{ 1}}错误,但是当您第一次加载页面时,它需要来自服务器,并且会给您403
和404
错误,因为您正在寻找的资源不会#&# 39; t存在或被禁止。
您需要做的是将服务器端环境配置为在您未引用文件(如css和js文件)时定位403
页面,因此所有网址都将以{{ 1}}页面,其中包含由ui-router处理的URL。每个服务器端技术(Apache,IIS,node.js等)都有不同的方法来处理这个问题,但大多数都有一个URL Rewrite模块和类似的处理方法。
此外,如果使用类似网址的哈希不是问题,您可以停用index.html
以阻止index.html
执行此类操作。您可以通过在html5Mode
上注入ui-router
并禁用它来实现此目的:$locationProvider
例如:
.config