当我点击此内容时:<a href="#/home">home</a>
网址为localhost/Sites/App/#!/#%2Fhome
当我点击此内容时:<a href="#!/home">home</a>
网址为localhost/Sites/App/#!/home
但这仅适用于我的计算机,对于我的同事则相反,如果网址中有!
,则链接不起作用。
我了解SEO最佳做法,但我们没有公共网站,我们需要在网址中使用没有感叹号的网站。
我理解url中的/
是编码的,因为angular认为这不是路径分隔符,而是为什么在我唯一的计算机中?我们有相同的代码。
在浏览器网络调用中,我们可以看到链接点击和坏网址生成之间没有服务器调用。
这是模块配置:
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"
}
}
答案 0 :(得分:31)
我通过添加以下内容解决了这个问题:
$locationProvider.hashPrefix('');
答案 1 :(得分:4)
//客户端配置到漂亮的URL //从网址中删除#
$locationProvider.html5Mode(true);
并将其添加到index.html
<base href="/"></base>