xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

web.configでリダイレクト

URLリダイレクトをかけたい、という事は比較的よくあることかと思います。当サイトもテーマを組み直すついでに記事のURLも微妙に変更したので、古いURLでのアクセスを受け入れるためにリダイレクトを設定する必要がありました。リダイレクトにもいくつかあって、例えば次のような手法が挙げられます。

以前bloggerを利用していたのですが、そのときの記事から本サイトへのリダイレクトはJavaScriptによる方法を採用していました。ですが、どうもそれは恒久リダイレクトじゃなかったらしいので今回は却下。web.configを使った方法を採用しました。

web.configの記述

web.configへの記述は次のような感じで、rewriteMapというのを利用します。7行目がリダイレクトの元 (key) と先 (value) を表しています。次のコード例は/archives/hoge というURLであれば /articles/fuga にリダイレクトするという意味になります。addタグはいくつも記載できるので、サイト内リダイレクトで大活躍しそうです。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rewriteMaps>
                <rewriteMap name="StaticRedirects">
                    <add key="/archives/hoge" value="/articles/fuga" />
                </rewriteMap>
            </rewriteMaps>
            <rules>
                <rule name="Redirect Rule" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{StaticRedirects:{REQUEST_URI}}" pattern="(.+)" />
                    </conditions>
                    <action type="Redirect" url="{C:1}" appendQueryString="False" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

「redirectType="Permanent"」としているので、これで恒久リダイレクト設定のハズ。

参考サイト

上記の方法はMSDNのドキュメントを参考にしました。正直言うと、こういう設定関連の小難しい事は苦手です...。

URL書き換えモジュールでURL書き換えマップを使用する