角度迫使网址中出现不受欢迎的感叹号

时间:2016-07-19 09:51:43

标签: javascript angularjs url iis

当我点击此内容时:<a href="#/home">home</a>网址为localhost/Sites/App/#!/#%2Fhome

当我点击此内容时:<a href="#!/home">home</a>网址为localhost/Sites/App/#!/home

但这仅适用于我的计算机,对于我的同事则相反,如果网址中有!,则链接不起作用。

我了解SEO最佳做法,但我们没有公共网站,我们需要在网址中使用没有感叹号的网站。

我理解url中的/是编码的,因为angular认为这不是路径分隔符,而是为什么在我唯一的计算机中?我们有相同的代码。

我们使用IIS或IIS express,Chrome或IE,没有任何区别。当它适用于我时,它不适用于所有其他人。

在浏览器网络调用中,我们可以看到链接点击和坏网址生成之间没有服务器调用。

这是模块配置:

angular.module('paper.app', [ 'ngMaterial'
                        , 'ngMessages'
                        , 'ngRoute'
                        , ...])
   .config(function ($routeProvider, $mdThemingProvider, $mdIconProvider, $locationProvider, $mdDateLocaleProvider, contentUrl, contentSvg) {

       $routeProvider
           .when("/", {
               templateUrl: contentUrl + 'view-home/html/home.html',
               controller: 'HomeController',
               controllerAs: 'homeCtrl'
           })
           .otherwise({
               redirectTo: '/'
           });

       $locationProvider.html5Mode(false);

       ...
   });

这是bower.json:

{
    "name": "...",
    "version": "1.0.0",
    "authors": [
        "..."
    ],
    "ignore": [
        "node_modules",
        "bower_components"
    ],
    "description": "",
    "main": "",
    "homepage": "",
    "dependencies": {
        "angular": "^1.5.7",
        "angular-material": "^1.0.9",
        "angular-route": "^1.5.7",
        "angular-material-data-table": "^0.10.9",
        "moment": "^2.14.1"
      }
}

2 个答案:

答案 0 :(得分:31)

我通过添加以下内容解决了这个问题:

$locationProvider.hashPrefix('');

答案 1 :(得分:4)

//客户端配置到漂亮的URL //从网址中删除#

$locationProvider.html5Mode(true);

并将其添加到index.html <base href="/"></base>