2015-11-10 13 views
5

私は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'; 
}); 

URLから#を削除するには、私は、HTML5モードを有効にしています:

$routeProvider.html5Mode(true); 

しかし、これは、その結果次のエラー:

Failed to instantiate module exampleApp due to: TypeError: $routeProvider.html5Mode is not a function

誰にもこの問題の解決策がありますか?このため、コンテンツはビューから表示されません。

編集は:誰もが疑問に思うために、作業コードは次のとおりです。

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); 
    }]); 
+2

(真)' $ locationProvider.html5Modeを使用してみてくださいに<base href="/">タグを追加する必要があります。 html5Modeは$ locationProviderのメソッドです。 –

+0

えええええええええええええええええええええええん:いつも定義されていないかReferenceError:$ locationProviderが定義されていない – JWDev

+0

あなたは$ routeProviderと同じ方法で$ locationProviderを注入する必要があります –

答えて

7

html5mode方法は$locationProviderプロバイダであり利用可能です。

その後、#無料URLのためhtml5modeを有効configブロック&でその依存関係が利用できるようにあなたの設定段階で$locationProviderを含める必要があります。代わりに、 `;

app.config(['$routeProvider', '$locationProvider', 
function($routeProvider, $locationProvider) { 

    //$routerProvider code here 

    $locationProvider.html5Mode(true); 

}]); 

コードはまた、あなたはindex.htmlページ

+1

これは完璧です!ありがとうございました。 – JWDev

+0

@JWTomicあなたを助ける喜び..ありがとう:) –

+1

$ locationProviderを設定すると、アプリケーションURLからハッシュタグが削除されますが、アプリケーションが正しく読み込まれません。これを解決するには、インデックスページのheadセクションにベースタグを追加する必要があります。 'base href =" http:// yourwebsitebase/"' –

関連する問題