最近我注意到,当使用ngRoute
AngularJS 应用程序中的模块,该路由包含#!
在 URL 中,之前只是#
.
例如,www.webiste.com/#/login
变成www.website.com/#!/login
我必须启用html5Mode
并且还禁用requireBase
使用代码将底座作为一个整体移除,
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
并且 URL 更改为www.website.com/login
它工作正常,但具有误导性,并且不是 Angular SPA URL 的样子。
如果我不启用html5Mode
,URL 已编码,我无法绕过它。所以www.website.com/#/login
变成www.website.com/#!/#%2Flogin
(注意后面的/
被编码为%2F
).
这是开发人员出于某种特定目的而实施的更改吗?这有什么区别呢?我需要对我的应用程序进行哪些更改才能使其正常运行?难道我做错了什么?
GitHub 问题:https://github.com/angular/angular.js/issues/15547
这就是所谓的哈希爆炸。
有一段时间 Twitter 也在使用同样的东西。它允许 AJAX 调用,让搜索引擎知道您的路径,而无需使用“真实”路径。但它被认为已经过时了。
https://developers.google.com/webmasters/ajax-crawling/docs/getting-started
stackoverflow 上还有另外一个答案:
做像 Twitter、Hash-Bang #! 这样的链接网址
Update:
不再需要哈希爆炸的原因之一是我们可以推送历史状态无需重新加载页面。像 React 这样的所谓“一页”网站就是这样做的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)