1

SO サイトの例を取り上げます。質問のリストに移動するには、URL は www.stackoverflow.com/questions です。舞台裏で、これはコントローラー (名前は不明) とそのアクションの 1 つに送られます。これがcontroller=homeおよびaction=questionsであるとしましょう。

ユーザーが www.stackoverflow.com/ home /質問を入力して同じページにつながり、SEO に関する限りページのランクを下げるのを防ぐ方法。これを解決するにはリダイレクトが必要ですか? この種の状況を処理するには、特別なルーティング ルールが必要ですか? 他の何か?

ありがとう

4

3 に答える 3

1

コントローラーはquestionsで、アクションはindex、つまり、ルート ハンドラーによって定義されたデフォルトのアクションであると想定しました。したがって、ページへの代替パスはありません。

于 2008-12-10T02:24:05.200 に答える
1

PDC でのPhil Haack のプレゼンテーションで、Jeff は Stack Overflow のソース コードの一部を示しています。彼が示しているものの中に、いくつかのルート登録のコードがあります。彼はコントローラーにこれらを持っていますが、彼がデフォルト ルートを使用していることはまったくわかりません。たとえば、デフォルト ルートがない場合は、/home/questions について心配する必要はありません。

/questions/index に関しては、はい、永続的なリダイレクトが有効です。永続的なリダイレクトに対して検索エンジンのペナルティを受けることはありません。

/home/questions を排除する別の方法は、ルート制約を使用することです。

于 2008-12-10T14:32:13.407 に答える
1

次のルートを使用します。新しいルートを作成するだけで、コントローラーをルートに配置する必要がなくなります。アクションのみを含むテンプレート文字列を作成し、コントローラーを「ホーム」などの使用するコントローラーにデフォルト設定します。

routes.MapRoute(
    "MyRoute",
    "{action}",
    new { controller = "Home", action = (string)null },
    new { action = "[a-zA-z_]+" }
);

お役に立てれば。

于 2008-12-10T14:38:53.940 に答える