角度力是URL中不需要的感叹号

Cru*_*tie 9 javascript iis url angularjs

当我点击这个:<a href="#/home">home</a>网址是localhost/Sites/App/#!/#%2Fhome

当我点击这个:<a href="#!/home">home</a>网址是localhost/Sites/App/#!/home

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

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

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

我们使用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);

       ...
   });
Run Code Online (Sandbox Code Playgroud)

这是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"
      }
}
Run Code Online (Sandbox Code Playgroud)

Fou*_*Two 32

我通过添加这个来解决它:

$locationProvider.hashPrefix('');
Run Code Online (Sandbox Code Playgroud)


gan*_*arg 4

//客户端配置为漂亮的url //从url中删除#

$locationProvider.html5Mode(true);
Run Code Online (Sandbox Code Playgroud)

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