URLReWriteを使って、リダイレクトを設定する。

Webサイト/アプリを運営していると、ページの評価の統一をしたい等の理由で、リダイレクトを設定したいケースはままあるかと思います。
その際、C#等のプロダクトコードでリダイレクトかけるのは少々面倒なので、IISのURLReWriteにて、設定をしてしまいます。

@準備

URLReWriteは下記URLからダウンロードして適用するか、Web Platform Installer経由でインストールしましょう。
Download Microsoft URL Rewrite Module 2.0 for IIS 7 (x64) from Official Microsoft Download Center

@規則設定

今回は以下について、設定を行います。

  • トレイリングスラッシュ無しパターン
  • 大文字混入パターン
  • トレイリングスラッシュ無し&大文字混入パターン
Case1:トレイリングスラッシュ無しパターン

これは、URLReWriteの規則のテンプレートに用意されているので、基本いじることはありません。
(設定の詳細は画像参照。正規表現パターンとリダイレクト先は、スニペット参照)

項目 スニペット
パターン (.*[^/])$
リダイレクトURL https://{SERVER_NAME}/{URL}/

f:id:CreatioVitae:20151201142811p:plain
f:id:CreatioVitae:20151201142801p:plain

Case2:大文字混入パターン

これもURLReWriteの規則のテンプレートに用意されているのですが、このままだと、JavaScriptや、CSSファイル等も、小文字のURLに書き換えられてしまいます。
条件に、ファイルでない、ディレクトリでないの条件を追加することで、外部ファイルは適用対象外に設定できるので併せて設定してください。
(設定の詳細は画像参照。正規表現パターンとリダイレクト先は、スニペット参照)

項目 スニペット
パターン [A-Z]
リダイレクトURL https://{SERVER_NAME}{ToLower:{URL}}

f:id:CreatioVitae:20151201142902p:plain
f:id:CreatioVitae:20151201142910p:plain

Case3:トレイリングスラッシュ無し&大文字混入パターン

上記二つのパターンの混合パターンです。
上記二つだけでも、リダイレクト自体は可能ですが、2回リダイレクトが発生してしまうため、リダイレクト回数を抑えたい場合は、別途規則を設定します。
(設定の詳細は画像参照。正規表現パターンとリダイレクト先は、スニペット参照)

項目 スニペット
パターン (?=(.*[^/])$)(?=.*[A-Z])
リダイレクトURL https://{SERVER_NAME}{ToLower:{URL}}/

f:id:CreatioVitae:20151201143045p:plain
f:id:CreatioVitae:20151201143054p:plain

実際に設定する場合、Web.Configで設定することもあるかと思いますが、基本的には、URLReWriteに規則を設定した上で、configのスニペットを生成するという流れかと思います。