URL hash-bang (#!/) 前缀而不是 Angular 1.6 中的简单哈希 (#/)

Posted

技术标签:

【中文标题】URL hash-bang (#!/) 前缀而不是 Angular 1.6 中的简单哈希 (#/)【英文标题】:URL hash-bang (#!/) prefix instead of simple hash (#/) in Angular 1.6 【发布时间】:2017-05-04 17:07:10 【问题描述】:

自从我上次处理我的项目以来,我在 AngularJS 项目中的 URL 已从 localhost:3000/admin#/ 更改为 localhost:3000/admin#!/...

网上没有找到,有人知道这是什么吗?

【问题讨论】:

【参考方案1】:

在 Angular 1.6.0 中,默认的 hashPrefix 已更改为 !。 请参阅related commit 和changelog entry。

【讨论】:

【参考方案2】:

它是 AngularJS 1.6 的新功能,它添加了一个新的哈希前缀。

由于aa077e8,默认哈希前缀用于$location hash-bang URL 已从空字符串 ('') 更改为 bang ('!')。如果你的 应用程序不使用 html5 模式或在浏览器上运行 不支持 HTML5 模式,并且你没有指定你自己的 hash-prefix 然后客户端 URL 现在将包含 ! 前缀。为了 例如,URL 将变为而不是 mydomain.com/#/a/b/c mydomain.com/#!/a/b/c.

Source here 了解更多信息。


如果您想删除此前缀,请将此代码添加到您的配置中:

appModule.config(['$locationProvider', function($locationProvider) 
  $locationProvider.hashPrefix('');
]);

【讨论】:

【参考方案3】:

每个人都建议删除前缀,但您也可以简单地将 ! 添加到客户端 URL(如果不使用 HTML5 模式,如果您在这里,您可能会这样做)。

因此,在您的 客户端 文件中,像这样更新 URL:

#/foo/bar > #!/foo/bar

【讨论】:

如何读取默认前缀,以便在需要时使用一些智能代码将此前缀添加到 URL?

以上是关于URL hash-bang (#!/) 前缀而不是 Angular 1.6 中的简单哈希 (#/)的主要内容,如果未能解决你的问题,请参考以下文章

为 SEO 的 hash-bang URL 放置啥 HTML 快照?

检查 URL 是不是有 http:// 前缀

在Symfony 4中将路由重定向到语言前缀

为啥十六进制数字以#而不是0x为前缀?

Laravel PHPUnit:如何测试 url 前缀

Unicode SQL 查询 W/ 参数而不是 N 前缀