web-dev-qa-db-ja.com

ASP.NET MVC 4-RouteConfig.csの301リダイレクト

ASP.NET MVC 4アプリのRouteConfig.csファイルにルートを追加して、別のルートへの永続的な301リダイレクトを実行するにはどうすればよいですか?

特定の異なるルートが同じコントローラーアクションを指すようにしたいと思います-これは、特にSEOの場合、301がベストプラクティスであると思われますか?

ありがとう。

33
niico

RedirectPermanentを使用する必要があります。以下に例を示します。

public class RedirectController : Controller
{

    public ActionResult News()
    {

        // your code

        return RedirectPermanent("/News");
    }
}

グローバルasaxで:

    routes.MapRoute(
        name: "News old route",
        url: "web/news/Default.aspx",
        defaults: new { controller = "Redirect", action = "News" }
    );
50

RouteConfigでこれを行う方法を具体的に尋ねたことを知っていますが、 IIS Rewrite Rules を使用して同じことを実現することもできます。ルールはweb.configに存在するため、ルールを作成するためにIISを使用する必要さえありません。単にweb.configに追加するだけで、すべてのアプリで移動できます。環境(開発、ステージング、製品など)およびRouteConfigをクリーンに保ちます。IISモジュールをIIS 7にインストールする必要がありますが、 7.5+にプリインストールされていると信じています。

以下に例を示します。

<?xml version="1.0" encoding="UTF-8"?> 
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Redirect t and c" stopProcessing="true">
                    <match url="^terms_conditions$" />
                    <action type="Redirect" url="/TermsAndConditions" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
25
Jonas Stawski