繁体   English   中英

html5mode Angular给出异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM