Javascript AngularJS SPA路由获取URL为“/”&引用;而不是",#&引用;

Javascript AngularJS SPA路由获取URL为“/”&引用;而不是",#&引用;,javascript,html,angularjs,mean-stack,hashbang,Javascript,Html,Angularjs,Mean Stack,Hashbang,在我的SPA AngularJS应用程序中,我得到的URL是http://localhost:4200/#!/而不仅仅是#(hash bang)。正因为如此,路由似乎不能以通常的方式工作。 我确实经历了这个stackoverflow,但没有找到任何解决方案。有人知道摆脱这个额外感叹号的解决方案吗 编辑: 在myindex.ejs: 我有 在我的approutapp.js: 我有 var myapp=angular.module(“myapp”、[“ngRoute”]); myapp.confi

在我的SPA AngularJS应用程序中,我得到的URL是
http://localhost:4200/#!/而不仅仅是
#(hash bang)
。正因为如此,路由似乎不能以通常的方式工作。 我确实经历了这个stackoverflow,但没有找到任何解决方案。有人知道摆脱这个额外感叹号的解决方案吗

编辑: 在my
index.ejs:
我有

在我的
approutapp.js:
我有

var myapp=angular.module(“myapp”、[“ngRoute”]);
myapp.config(函数($routeProvider){
$routeProvider
.当(“/”时{
templateUrl:“/static/list.ejs”
})
.when(“/about”{
templateUrl:“/static/about us.ejs”
})
});
myapp.config(['$locationProvider',函数($locationProvider){
$locationProvider.hashPrefix(“”);

}]);尝试使用
$locationProvider.hashPrefix(“”)

原因是:

如果浏览器是HTML5,则
angularJS
会将其重定向到
#

否则它将仅为
#

请阅读上的此文档以了解有关此方面的更多信息:

Opening a regular URL in a legacy browser -> redirects to a hashbang

URL Opening hashbang URL in a modern browser -> rewrites to a regular URL 
HTML5模式

在HTML5模式下,
$location
服务getter和setter与 通过HTML5历史API的浏览器URL地址。这就允许 使用常规URL路径和搜索段,而不是它们的hashbang 等价物。如果浏览器不支持HTML5历史API, $location服务将退回到使用hashbang URL 自动地这使您不必担心 显示应用程序的浏览器是否支持历史API;这个 $location service透明地使用了最佳可用选项

在旧式浏览器中打开常规URL->重定向到hashbang URL在现代浏览器中打开hashbang URL->重写为常规 URL注意,在这种模式下,AngularJS截取所有链接(根据 下面是“Html链接重写”规则),并以某种方式更新url 从不执行整页重新加载的


这种变化可以在角度版本>1.6.x中观察到。在上一个版本中,它就像是只有
#
(hash-bang)一样。 要仅以类似于
的方式获取url,您只需以这种方式编写

appModule.config(['$locationProvider', function($locationProvider) {
  $locationProvider.hashPrefix('');
}]);
此更改是在
版本1.6.0
中引入的,您可以看到

此外,在此处添加所写内容:

$location
哈希bang URL的哈希前缀已从空字符串“”更改为bang“!”。如果您的应用程序不使用
HTML5模式
,或者正在不支持
HTML5模式
的浏览器上运行,并且您没有指定自己的哈希前缀,那么客户端URL现在将包含一个“!”前缀。例如,而不是mydomain.com/#/a/b/c将成为mydomain.com/#/a/b/c


是的,但给出的答案无效!:(它是如何工作的?您能否提供一个问题的详细信息以供审查?url
/#/!/
/#!
不同;这看起来可能是服务器上的某个内容,而不是角度。在添加
$locationProvider.hashPrefix(“”)之前);
我得到了
http://localhost:4200/#!/
。添加您标记为重复的帖子中提供的解决方案后,我得到
http://localhost:4200/#/!/
@Pritam,不,事实上问题似乎在其他地方。但感谢您的帮助。这就是我投票的原因:)