我正在尝试在AngularJS中创建所谓的“SEO友好” URL。
在我的用于路由的script.js中,我有:
app.config(['$routeProvider',
function($routeProvider) {
$routeProvider.html5Mode(true);
when('/blog', {
templateUrl: 'blog.html',
controller: 'BlogController'
}).
when('/page/ideas', {
templateUrl: 'ideas.html',
controller: 'IdeasController'
}).
otherwise({
templateUrl: 'home.html'
});
}]);
app.controller("BlogController", function($scope) {
$scope.title = 'Blog';
});
app.controller("IdeasController", function($scope) {
$scope.title = 'Ideas';
});
要从网址中删除#,我启用html5模式:
$routeProvider.html5Mode(true);
但是,这导致以下错误:
有人对此问题有解决方案吗?这意味着该内容将不会从 View 中显示。
编辑:对于任何想知道的人,工作代码是:
app.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$routeProvider.
when('/blog', {
templateUrl: 'blog.html',
controller: 'BlogController'
}).
when('/page/ideas', {
templateUrl: 'ideas.html',
controller: 'IdeasController'
}).
otherwise({
templateUrl: 'home.html'
});
$locationProvider.html5Mode(true);
}]);
最佳答案
html5mode
提供程序上提供了$locationProvider
方法。
您应该在配置阶段包括$locationProvider
,以使该依赖项在配置块中可用,然后为html5mode
免费URL启用#
。
代码
app.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
//$routerProvider code here
$locationProvider.html5Mode(true);
}]);
另外,您必须在
<base href="/"
页面上添加index.html
>标签