如何在 Angular js 中禁用哈希重定向

Posted

技术标签:

【中文标题】如何在 Angular js 中禁用哈希重定向【英文标题】:how to disable hash redirect in angular js 【发布时间】:2016-11-12 00:57:06 【问题描述】:

我有一个如下网址

http://www.something.com/sometest/test/#registration

一些逻辑是基于 IE 的#registration 编写的。

现在我正在使用 Angular js,它的重定向如下,这打破了逻辑。

http://www.something.com/sometest/test/#/registration

我想到了html5 mode,但它造成了其他问题,例如我的页面中的链接不起作用,只有 url 正在更新(我猜我们使用 html5mode 时会出现这种情况)。所以,我不想使用 html5mode。我只是想阻止 # 重定向到 /#/

请告诉我如何禁用此重定向

注意:我没有使用路由,也不需要它。我也不想使用 html5mode。这是现有的实现,我需要在 Angular js 应用程序中使用它来打开一个弹出窗口或其他东西。

【问题讨论】:

您是否也将服务器配置为html5模式? 我不知道这是否可以帮助您,但请查看此答案***.com/questions/32626081/… 我自己解决了这个问题。这是由于向控制器注入了$location 服务。 【参考方案1】:

如果您的应用程序在 /sales/ 下运行,请尝试在 index.html 中设置基本路径并打开 html5Mode:

<base href="/sales/index.html" />

否则,

<base href="/" />

如果您使用的是 IE9,那么 HTML5mode 将工作,因为 IE9 不支持 HTML5 History API

function supports_history_api() 
  return !!(window.history && history.pushState);

请参阅使用$location

这行得通!

干杯:)

【讨论】:

html5mode 也破坏了其他一些东西。我不想用它 您使用的是哪个版本的 Angular?我认为它不会破坏很多应用程序 我已经在我的问题中提到我不想使用 html5mode 我确定你做错了什么,而且你的帖子并不是说你不想使用 html5mode。它说你用过但没用 现在我已经更新了问题,如果你有没有 html5mode 的东西,那么更新你的答案【参考方案2】:

我自己解决了这个问题。这是由于向控制器注入了$location 服务。

//issue
app.controller("testController", ["$scope", "$location", function($scope, $location) 

]);

我从控制器中删除了$location 服务,问题得到解决。

//resolved
app.controller("testController", ["$scope", function($scope) 

]);

【讨论】:

以上是关于如何在 Angular js 中禁用哈希重定向的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Laravel 5 重定向到没有哈希(#)的 Angular 路由?

XenDesktop禁用特定盘符重定向(优化模式)

Linux 第三天 重定负管道符环境变量

如何使用 Angular.js 进行重定向?

如何将所有路由重定向到nest.js中的index.html(Angular)?

如何保护 Django 中的静态 HTML 文件? (重定向前需要登录)