我的 AngularJS 项目使用html5mode
,我做这些代码来打开 html5mode
- 在 HTML 中:
...
<base href="/features-A/">
...
- 在 JS 中:
app.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5mode(true)
}])
注意:这/features-A/
不是我项目中的实际文件夹,它只是AWS CloudFront中定义的一种行为,因为我们也有一些/features-B
指向其他项目的URL,我们只需要知道:是否通过“ http:// ”访问myhost.com ”或“ http://myhost.com/features-A/ ”是我项目的入口文件:index.html
这是浏览器的作用:
当转到我的“登录”页面时,地址栏中的 URL 是
http://myhost.com/features-A/signin
当转到“主页”页面时,地址栏中的 URL 是
http://myhost.com/features-A/ome
如我们所见,AngularJS 通过History
API 将 URL 添加/features-A/
到 URL 中
我想要的是
当人们访问“登录”时,该 URL 没有
/features-A/
:http://myhost.com/signin
当人们访问“主页”页面时,该 URL 具有
/example
:http://myhost.com/features-A/home
这将使我们的网站看起来像登录页面是一个独立的和外部的系统/features-A/
。
我试过的
我尝试了一些解决方案,但没有奏效:
- 在事件中动态设置基本 href
stateChangeSuccess
但 URL 仍然更改 - 使用 HTML5 历史 API
pushState
和replaceState
函数,这样会导致页面无限刷新
那么,有没有办法解决这个问题呢?