以AngularJS路由结尾的奇怪URL

时间:2017-02-08 00:45:05

标签: angularjs

我刚注意到,出于某种原因,我明白了:

http://localhost/ReportsWeb/#!/

而不是:http://localhost/ReportsWeb/#/

感叹号被添加......为什么,任何想法,都无法找出其原因。

显然,如果我导航到http://localhost/ReportsWeb,则网址会变为http://localhost/ReportsWeb/#!/

更新

谢谢大家的帮助。 这两个选项工作正常:
1)
设置$locationProvider.html5Mode(true)
添加<base href="/ReportsWeb/">
2)
设置$locationProvider.html5Mode(false);
设置$locationProvider.hashPrefix('');

哪种选择是“更正确”的方式来处理这个?

对我而言,第二个选项看起来正确,我不需要进行任何更改以使我的项目工作。在第一种情况下,我需要设置基本元素,但角度路由不起作用,我可能必须更改所有“/#/ Path”以排除哈希标记。所以,我会选择#2)

感谢

2 个答案:

答案 0 :(得分:3)

Hashbang模式是AngularJS用于为Angular应用提供深层链接功能的技巧。在hashbang模式(html5模式的后备)中,URL路径采用前置#字符。它们不会重写标记,也不需要任何服务器端支持。 Hashbang模式是AngularJS使用的默认模式,否则不会被告知。 hashbang URL如下所示:

http://localhost/ReportsWeb/#!/

要明确并配置hashbang模式,需要在app模块的config函数中进行配置。我们还可以配置hashPrefix,在hashbang模式下,它是!前缀。此前缀是Angular用于旧版浏览器的回退机制的一部分。我们也可以配置这个角色。

angular.module('myApp', ['ngRoute'])
    .config(['$locationProvider', function($locationProvider) {
           $locationProvider.html5Mode(false);
           $locationProvider.hashPrefix('');
}]);

答案 1 :(得分:2)

试试这个,应该有效。您需要将html5Mode设置为true,以便处理您的角度路线,这里有一些示例代码,说明您的应用应该是什么样的

{{1}}