2017-03-21 15 views
0

AngularJSバージョン1.3.16とnodeJSを角度ルーティングのバックエンドとしてng-routeとして使用しています。作業コードは#!ノードと角度のURLセパレータとして使用します。angularjs 1.3.16 html5modeでルーティングするとURLは更新されますが、コンテンツは更新されません

URLの例:!! /店舗/ 1234 /#/部門/ /店舗/ 1234 /#/部門/プロデュース/カテゴリを生成/果物

NodeJSルーティングコード:

app.get('/store/:storeid', ctrl.storeView); 

角度ルーティングコード:

 $routeProvider.when('/department/:deptIndex', { 
    controller: 'CartController', 
    resolve: { 
     // I will cause a 1 second delay 
     delay: function ($q, $timeout) { 
      var delay = $q.defer(); 
      $timeout(delay.resolve, 1000); 
      return delay.promise; 
     } 
    } 
}).when('/department/:deptIndex/category/:catIndex', { 
    controller: 'CartController', 
    resolve: { 
     // I will cause a 1 second delay 
     delay: function ($q, $timeout) { 
      var delay = $q.defer(); 
      $timeout(delay.resolve, 1000); 
      return delay.promise; 
     } 
    } 
}); 
$locationProvider.html5Mode(false).hashPrefix('!'); 

URLをSEOのフレンドリーでクロール可能にするには、URLからハッシュバングを削除する必要があります。 この問題は、html5モードを有効にしようとしているときに発生します。モードを有効にすると、角度ルーティングが機能しません。

+0

「機能しない」とはどういう意味ですか?エラーがスローされていますか?画面は空白ですか?いずれのルートも有効ですか? –

+0

あなたのコードは$ locationProvider.html5Mode(false)で動作しますか? –

+0

@BOSSはい、私のコードはhtml5modeがディアブルです。 –

答えて

0

<head> 
    <base href="/"> 
</head> 

またhashPrefixをtrueにhtml5modeを設定し、削除する必要がありますまた、店舗コードのプレフィックスを付けた角度ルーティングURLを更新しました。

app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) { 
$routeProvider.when('/:storeid/department/:deptIndex', { 
    //my routing code 
}); 
+0

Google botでうまくいきましたか?私はURLにハッシュのないhtml5modeのサイトを持っていますが、googlebotはそれらを重複として扱います: – helcim

0

各ルートは、テンプレートまたはテンプレートのURLを持つべきである、とあなたのHTMLを参照するにはNG-ビューを持つルートコンテンツ

+0

テンプレートまたはテンプレートURLを必須としていますか?私は自分のコードのどこにでも使用していません。 html5modeが無効になっていると、ルーティングが正常に機能します。 –

+0

あなたのコードはtemplateやtemplateURLなしでも引き続き動作しますが、ルーティングを使用することができます。あなたの質問の説明で「内容が更新されていません」とはどういう意味ですか? –

1

はあなたのindex.htmlのベースURLを設定している必要がありますか?

<head> <base href='/store/'+store.storeCode> </head>

:私のルーティングは、ノードサーバのURLとしてかつて私は更新され、私のベースHREFを働き始め

$locationProvider.html5Mode(true); 
関連する問題