【发布时间】:2019-04-09 04:01:31
【问题描述】:
我的AngularJS项目使用html5mode,我做这些代码打开html5mode
- 在 HTML 中:
...
<base href="/features-A/">
...
- 在 JS 中:
app.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5mode(true)
}])
注意:/features-A/ 不是我项目中的实际文件夹,它只是 AWS CloudFront 中定义的一种行为,因为我们也有一些 URL @987654327 @指向其他项目,我们只需要知道:无论是通过“http://myhost.com”还是“http://myhost.com/features-A/”访问都是我项目的入口文件:index.html
这是浏览器的作用:
-
进入我的“登录”页面时,地址栏中的网址是
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/之外的系统。
我尝试了什么
我尝试了一些解决方案,但没有奏效:
- 在
stateChangeSuccess事件中动态设置基本 href 但 URL 仍然更改 - 使用HTML5历史API
pushState和replaceState函数,这样会导致页面无限刷新
那么,有什么办法可以解决这个问题吗?
【问题讨论】:
-
将
base标签更改为/,然后相应地定义您的路线。 -
@varunagarwal
/example/在 HTML 中定义并由 AngularJs 自动添加 -
如果您将基本标签更改为 / 它应该可以工作。
-
@Rey Wang 如果可以的话,请分享这方面的代码,以便我们更好地检查这个问题
-
@ReyWang 转到
index.html并查找<base>标签。将其从/example/更改为/
标签: javascript angularjs html5-history html5mode