Angular 新路由器从 URL 中删除 /#

Angular New Router remove /# from URL

我正在使用 angular 1.4.6 和新的路由器版本 0.5.3,我想从 url 中删除“/#”。似乎无法在 Internet 上找到有关它的任何信息。

编辑:$locationProvider.html5mode(true); 给出以下错误: Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to: TypeError: $locationProvider.html5mode is not a function

取自Scotch.io

$locationProvider.html5Mode(true);

您只能在支持 HTML5 历史 API 的浏览器中从 URL 中删除标签。如您所见here,它在 IE9 中不受支持,因此在那种情况下它将回退到 Hashtags。

话虽如此,为了使您的 URL 在支持的浏览器中更漂亮,您可以使用如下所示的 $locationProvider 配置启用 html5Mode

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

除此之外,您需要为 angular-router 定义应用程序的基础 URL 以识别路由。如果你的URL是

http://localhost:8080/myApp/#showLogin
http://localhost:8080/myApp/#showHomePage

然后您需要使用 <base> 标签定义基础 URL,如下所示

<head>
    <base href="/myApp">
</head>

希望对您有所帮助:)