2010-12-09 21 views
1

{language}/item/{itemId}/proreviewsとitem/{itemId}/proreviewsを1つのルートに結合する方法はありますか?ASP.NET MVC 2つのルートを1つに結合する

UPD。 {言語}はオプションです

UPD2です。ワークフローは次のとおりです。ユーザーはdomain.com/item/1/proreviewsと入力し、domain.com/en/item/1/proreviewsのような適切な国コードでURLにリダイレクトします。今ではローカリゼーションを実装していますが、現実的な(国番号なし)ルートをすべて複製したくありません。

答えて

0

{language}を最後のパラメータにするだけでは、簡単にオプションにすることはできません。

+2

リンクはhttp://domain.com/en/item/1/proreviewsのようになります。 http://domain.com/item/1/proreviews/enリンクを持つことは奇妙なことでしょう。 – SiberianGuy

+0

@ldsa - 私はそれがまったく奇妙ではないと思います。人々は一般的にURLを見ていません。 –

+2

これはビジネス要件であると仮定します – SiberianGuy

1

ルートでは正規表現を使用できます。あなたは、あなたがサポートしている文化に合った正規表現を考え出すことができます。そのルートを既定のルートの上に置くだけで、それが通過するはずです。

他の可能性としては、言語をCookieまたはおそらくサブドメイン(en.domain.com/item/1/proreviews)に入れることがあります。

0

国コードで始まっていないURLに自動的に(おそらく/ en/inが追加された)言語が追加されるように、単一の書き換えルールを作成しないでください。

この方法では、IISが言語を含むMVCに要求を渡すため、ユーザーは誰も賢明ではないため、1つの経路しか持たないでしょう。

これは、言語がオプションであることも意味します。

は、私が指摘しなければならないけれども、あなたが、そうでない場合、それはあなたが(/item/1234/proreviewsと同じ内容になります/en/item/1234/proreviews)別のURLで重複したコンテンツを持っていることの結果として、SEOの影響を受けるだろう可能性が極めて高い、おそらく301これらの書き換えだなければならないこと。

関連する問題