Angularjs 基本标签和 $locationProvider 阻止加载模板

Angularjs base tag and $locationProvider prevents templates to be loaded

我想删除 angularjs url 上的 #。所以我关注了this blog.

这是我的 .config() :

.config(['$stateProvider', '$locationProvider' function($stateProvider, $locationProvider,) {

     $stateProvider.state('main', {
        url: '/',
        templateUrl: 'path/to/main.html',
        controller:'mainCtrl'
     })

     $locationProvider.html5Mode(true);
}])

这是我的 <header> :

<head>
    <scripts>....

    <base href="/"> // I ADDED THIS
</head>

但是当我访问/ link。像这样 http://localhost/my-app/ 它只显示一个空白页。控制台上没有 error/s 所以我假设问题出在模板的加载上。我正在使用 ui.router。有人遇到过这个问题吗?谢谢。

第一名 当你使用 <base href="/"> yu set ALL relative URLs appends to the path. 因此,如果您的应用在 /my-app/ 可用,请使用 <base href="/my-app/"> 您也可以尝试相对基础 href <base href="./">,但我不推荐它。 现在你的应用程序在 http://localhost/my-app/ 但基础是 http://localhost/

第二名 当您使用 html5 路由时,您可以确保网络服务器不响应其他页面,但您的 index.html

3,在那之后 ,可能因为基础 url...

而无法加载模板