我正在尝试在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>标签

10-01 04:40