.htaccessを使って移転先URLに自動的にリダイレクトさせる方法

.htaccessを使ってURLをリダイレクトさせる方法について記載します。
※.htaccessを利用したリダイレクトは利用出来るサーバと利用出来ないサーバがありますので、事前に確認してみてください。

静的なリダイレクト処理

最近http://pnpk.kameninja.comのコンテンツをpnpk.netに統合したのですが、その際に検索エンジンのキャッシュから見に来ていただける方のために.htaccessを使ってリダイレクト処理を行いました。例えば以下のURLにアクセスすると、いつの間にかこのサイト(https://pnpk.net/cms/archives/525)に自動的にリダイレクトされます。

http://pnpk.kameninja.com/archives/38

今回の場合はURLに一定のルールが無いので手動でリンク先を指定しています。.htaccessの中に以下の記載をしています。

Redirect permanent /archives/38 https://pnpk.net/cms/archives/525

構文は

Redirect permanent <アクセス元URL> <移転先URL>

となります。

この方法だと移転先のURL毎に設定を行う必要がありますが、アクセスされたURLと移転先URLのURLに一貫性が無い場合にはとても有効です。

動的なリダイレクト処理

以下のように、移転先URLに一定のルールがある場合には、正規表現を利用することで、移転先URLを一括指定する事も可能です。

http://pnpk.net/hogehoge/archives/38
          ↓
http://hogehoge.pnpk.net/archives/38

この場合にはRedirect permanentでは無く、RedirectMatch permanentを使います。

RedirectMatch permanent /archives/(.*) http://hogehoge.pnpk.net/archives/$1

Word Pressの場合、archivesの下のディレクトリには数字が入りますので、以下のように記載する事も出来ます。

RedirectMatch permanent /archives/(\d+) http://hogehoge.pnpk.net/archives/$1

“\d+”は1桁以上の数字にマッチします。

archives以外のディレクトリに対しても転送処理を行う場合には、以下のように記載する事も可能です。

RedirectMatch permanent (.*) http://hogehoge.pnpk.net$1

()で囲んだグループが、$1にそのまま置き換わるイメージです。”.”は任意の1文字とマッチする。という意味で、”*”は0回以上の繰り返しを意味します。”(.*)”が表現するのは任意の1文字を0回以上繰り返したものに一致させる意味になります。つまり、何が入ってても、その文字列を$1に置き換えるわけです。

WordPressを引っ越しする場合の.htaccess記載方法

具体的な例として、WordPressを利用しているサイトが構成を変更しないで移転する場合には以下のように.htaccessを記載しておけば、問題無いと思います。

RedirectMatch permanent (.*) http://<移転先URL>$1

結構簡単ですね。

リダイレクト処理の確認方法

リダイレクト処理が完了したら以下のサイトを利用する事で、処理が正常に完了しているか確認する事が出来ます。

View HTTP Request and Response Header

正規表現をさらに学ぶために

正規表現はかなり奥が深いです。勉強になるサイトをいくつかリンクしておきますので、興味があれば是非一度読んでみてください。

使うほどに良さが分かる正規表現
正規表現
第9章 正規表現

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です