2016-08-17 14 views
0

フラグメント識別子(#)を削除することについて他の投稿のすべてを試しました。 #識別子ですべきことはすべて動作しますが、それは私のプロジェクトにとってはすばらしい改善です。 Angularjs - URLから#を削除する方法 - エラー: '履歴'で 'pushState'を実行できませんでした:

  1. 私は私のindex.htmlに<base href="app" />をtrueに設定
  2. に$のlocationProviderと設定html5Modeを設定しても<base href="/" />しようと試みました。 私は<base href="/" />
  3. ベースを設定せずにrequireBase: falseを使用しました。
  4. 誰かが他の誰かが示唆したように、私はweb.configファイル内のルールを書いた
  5. を示唆するようにHTML5のヒストリーAPIのブラウザのサポートを確認するためにif(window.history && window.history.pushState)$locationProvider.html5Mode(true)をラッピング。
  6. 私はそれを見つけた後に私が見つけたすべてを試しました。

私はこのエラーを取得しています:

angular.js:13708エラー:「http://sales/?_ijt=d1r1ladp5ro1tvflefsdpnfvd4」URLと履歴状態オブジェクトを持つドキュメントで作成することができません。「歴史」on「にpushState」を実行できませんでした。起点 'http://localhost:52471'とURL 'http://localhost:52471/BeerbayCRM/BeerbayCRM/app/index.html?_ijt=d1r1ladp5ro1tvflefsdpnfvd4'。

利用可能な環境変数のリストを参照 あなたの助けに感謝します!ありがとうございました。

は、ここに私のコードです:

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

 
    $routeProvider 
 
     .when('/', { 
 
     templateUrl: "views/productsView.html" 
 
     }) 
 
     .when("/products", { 
 
     templateUrl: "views/productsView.html" 
 
     }) 
 
     .when("/sales", { 
 
     templateUrl: "views/salesView.html" 
 
     }) 
 
     .when("/charts", { 
 
     templateUrl: "views/chartsView.html" 
 
     }) 
 
     .otherwise({ 
 
     templateUrl: "views/productsView.html" 
 

 
     }); 
 

 
    if (window.history && window.history.pushState) { 
 

 
     $locationProvider.html5Mode({ 
 
     enabled: true 
 
     }); 
 
    } 
 
    } 
 
]) 
 

 
.controller("routeCtrl", function($scope, $location) { 
 
    $scope.setRoute = function(route) { 
 
    $location.path(route); 
 
    } 
 
});
<!DOCTYPE html> 
 
<html ng-app="myApp"> 
 

 
<head> 
 

 
    <!--.....all the dependencies are here.....--> 
 

 
    <base href="app" /> 
 

 
</head> 
 

 
<body ng-controller="myAppCtrl"> 
 
    <div class="navbar navbar-inverse"> 
 
    <a class="navbar-brand" href="#">Beerbay</a> 
 
    </div> 
 
    <div ng-controller="routeCtrl" class="col-sm-1"> 
 
    <a ng-click="setRoute('products')" class="btn btn-block btn-primary btn-lg">Products</a> 
 
    <a ng-click="setRoute('sales')" class="btn btn-block btn-primary btn-lg">Sales</a> 
 
    <a ng-click="setRoute('charts')" class="btn btn-block btn-primary btn-lg">Charts</a> 
 
    </div> 
 
    <ng-view/> 
 
</body> 
 

 
</html>

アップデート:私はWebStormが使用するものとは別のノードサーバでアプリケーションを起動した後、それは部分的に取り組んでいます。私はリフレッシュページをヒットした後、ページ上に短いメッセージが表示されます:「GET/....部分的なビュー名*」

+0

私は時間がないのでリダイレクトを書き直すようにサーバーを設定するのは難しいと思われますが、私は断片識別子を保持していますが、私は提案や解決策に開放しています。ありがとう。 –

答えて

1

サーバー側からのリダイレクトが必要です。 example.com/yoursite/some-pageデフォルトでは、それが見つからない場合、その場所からいくつかのインデックスファイルをロードしようとしています。サーバー側のリダイレクトを設定する必要があります。/yoursiteで始まり、/yoursite/index.htmlにリダイレクトされた経路が見つからない場合は、角度ルーティングでそれを処理できます。

https://docs.angularjs.org/guide/$location#server-side

も参照してください

Reloading the page gives wrong GET request with AngularJS HTML5 mode

あなたは今、あなたはリダイレクトに対処するためのノードサーバを設定する必要がありますリクエストを処理していますノードのサーバーを持っている場合は、個人的にのみ行っていますそれはApacheとNginxと一緒だ。

+0

ありがとうございました。私はリンクを読むでしょう。 –

関連する問題