2

コンテンツの重複 (SEO) にはいくつかの問題があることはわかっていますが、それは私のプロジェクトでは関係ありません。

私のバックボーン ルーターには、次のものがあります。

routes: {
    "": "startOrder",
    "order/:orderNumber/:stepName": "getOrder",
    "order/:orderNumber/:stepName/": "getOrder"
},

2 番目と 3 番目のルートは同じものにつながることに注意してください。

問題は、誰かが単に「/」文字で終わる URL を入力した場合、別の関数を呼び出して (スラッシュを削除して) ほしいのですが、これは起こらず、常に空白のルートに一致します。その後、URL にスラッシュがあってはならない場所にスラッシュが含まれているため、後で問題が発生します。

何か不足していますか?

4

3 に答える 3

6

ルートのオプション部分として括弧内にスラッシュを入れることができるようになりました:

var Router = Backbone.Router.extend({
  routes: {
    'order/:orderNumber/:stepName(/)': 'getOrder'
  },
  // ...
});

バックボーン ルートの最後にあるスラッシュのトピックに関するかなり包括的な問題スレッドから。

ただし、そのスレッドにも記載されているように、ページに複数の URL が記録されるのを防ぐには、Apache またはその他のサーバー構成でパスの末尾にあるスラッシュを削除することをお勧めします。

于 2013-11-21T15:50:18.167 に答える
0

で始まっていない可能性があるため、一致しないのではなく、常に空白のルートに一致するため、次のように開始しBackbone.history.startます{ pushState: true }Backbone.history.start({pushState: true });

で終わるものすべてに一致するルートが必要な場合は/、 を使用して*splatで終わることができます/。このようなものはうまくいくはずです:

routes: {
    "": "startOrder",
    "order/:orderNumber/:stepName": "getOrder",
    "order/:orderNumber/:stepName/": "getOrder",
    "*dummy/": "endsWithSlash"
}

ダミールートが最後であることを確認してください。それ以外の場合、ダミー ルートは、注文の前にスラッシュで照合されます。

于 2013-01-25T16:45:49.057 に答える
0

このルートは内部的に正規表現に変換されます。2つのケースでルートメソッドを介して生の正規表現を渡すことができます

于 2013-01-26T04:11:42.970 に答える