特定 URL のファイル名を保ったまま一括リダイレクトする方法

特定 URL のファイル名を保ったまま一括リダイレクトする方法

ウェブサイトを移行したときなど、旧ページ URL のファイル名をある程度保ったまま新サーバーの新フォルダに全ページリダイレクトさせたい場合があります。

特定の拡張子へのアクセスだけリダイレクトしたい

旧サーバー: https://www.old-example.com/news/2018-11-06-press-release.html
新サーバー: https://www.new-example.com/pressrelease/old-news/2018-11-06-press-release.html

といったように、旧サーバーの .html だけ、新サーバーの別の構造下の同名ファイルにリダイレクトさせたい場合。この場合、旧サーバーの web.config に以下のように設定します。

上記のルールでは、旧サーバーの news フォルダにある、拡張子が .html のファイルにリクエストがあった場合、新サーバーの /pressrelease/old-news/ の同名の .html ファイルにリダイレクトを行う、という設定です。

特定フォルダ以下のすべてのアクセスを、同じファイル名でリダイレクトさせたい

旧サーバー: https://www.old-example.com/datafile/*
新サーバー: https://www.new-example.com/old-server/sample-datafile/*

この例では、 旧サーバーの /datafile/ 以下にある、PDF だったり ZIP だったりのリクエストを、新サーバーの特定のフォルダに、ファイル名を保持したままリダイレクトさせます。

上記のルールでは、旧サーバーの /datafile/xyz.pdf というリクエストを https://www.new-example.com/old-server/sample-datafile/xyz.pdf にリダイレクトを行います。

上記 2つの例は web.config での記述になりますので、旧サーバーが IIS 系の環境である必要があります。このメリットは、仮にリダイレクト対象が何万とあった場合でも、いちいちひとつひとつのファイルを指定してリダイレクトしなくても、自動的に 1 対 1 でのリダイレクトを行ってくれることです。