![](/img/trans.png)
[英]Angular route with html5Mode giving 'Not found' page after reload
[英]html5mode Angular giving exception
我正在Angular 1.5.5中构建一个网站,并希望拥有漂亮的url(不带#)。 按照其他文章的说明,我在index.html中添加了Html5mode
作为路由器以及基本url。
$locationProvider.html5Mode(true).hashPrefix('!');
<base href="innovationglobal">
但是,我得到以下异常:
错误:无法在“历史记录”上执行“ replaceState”:无法在源为“ http:// localhost:8080 ”的文档中创建URL为“ http:// home / ”的历史状态对象。 在Yf.k.url(lib / 1.5.5 / angular.min.js:47:311)出现错误(本机)时
将标签更改为绝对URL或路径后
<base href="innovationglobal">
通过添加/
或https://
<base href="/innovationglobal/">
现在,当您重新加载页面时,浏览器将向服务器发送您当前路径的请求: /innovationglobal/
您需要设置服务器以处理该路径-以及Angular应用可能放入浏览器地址栏中的任何其他路径。 可能是/innovationglobal/users/
或/innovationglobal/products/detail/
等。
因为用户可以按F5
重新加载他们正在查看的任何页面。 这将使您的Angular应用程序失去控制权,并将对该URL的请求发送到服务器。
因此,您需要为服务器设置全部功能。 无论地址栏中的路径如何,您的服务器都应使用Angular应用程序的index.html
进行回复。
但是要小心,您需要为静态资产(.js和.css之类的文件)设置一个例外。 对于nginx,这看起来像这样:
location = /static/ {
alias /var/www/static/;
try_files $uri $uri/ =404;
}
location /innovationglobal/ {
root /var/www/innovationglobal;
try_files $uri /app/index.html =404;
}
根据您使用的Web服务器。
您是否尝试过html5Mode
不使用基础的情况下启用html5Mode
:
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.