①リダイレクトさせたいファイルとリダイレクト先の内部構造が違う場合の設定記述方法
(ディレクトリ名もファイル名も変わる場合)
[htaccessへの記述]
--------------------------------------------------------------------------
RedirectMatch permanent /old/(.*) http://www.test.com/new/index.html
--------------------------------------------------------------------------
[結果]
oldディレクトリ内へのファイルへのアクセスはすべて
http://www.test.com/new/index.html
に転送されます。
②リダイレクトさせたいファイルとリダイレクト先の内部構造が同じ場合の設定記述方法
(ディレクトリ名が変わるだけの場合)
[htaccessへの記述]
--------------------------------------------------------------------------
RedirectMatch permanent /old/(.*) http://www.test.com/new/$1
--------------------------------------------------------------------------
[結果]
http://www.test.com/old/index.html
→転送→http://www.test.com/new/index.html
http://www.test.com/old/01.html
→転送→http://www.test.com/new/01.html
http://www.test.com/old/001.html
→転送先のnewディレクトリに同じ名前のファイルがない場合→404エラー
★正規表現を使ったリダイレクトについて---(詳細→ http://w3g.jp/others/htaccess/redirect )
RedirectMatchディレクティブでは、通常の Redirectディレクティブに加えて正規表現を使った HTTPリダイレクトが可能です。たとえば、今まで HTMLファイル形式で作成していたものを、includeモジュールなどの使える PHP のファイルへと移し変えた場合を想定します。
RedirectMatch permanent (.*)¥.html$ http://w3g.jp$1.php
ここでは「(.*)¥.html$ http://w3g.jp$1.php 」という記述を行うことで、移転前は URI の最後が ".html" であったファイルが要求された場合に ".html" に代わって ".php" の拡張子をもつファイルを要求するように設定しています。
RedirectMatchディレクティブの後にある permanentオプション(属性)は、そのリソースが永久的に移動したことを示すステータスを返します(オプションは次の項目にまとめています)。このように正規表現を使うことで、ファイル名はそのままで拡張子だけを変えて移動先のリソースを要求することも可能です。
RedirectMatch permanent (.*)post(.*)¥.php$ http://w3g.jp/new/
上記の場合は、URI に"post" という文字列を含み、拡張子が ".php" であるファイルへとアクセスがあった場合に http://w3g.jp/new/ 以下へと HTTPリダイレクトを行う設定です。 このように正規表現のパターンマッチ(任意の文字列に文字列のパターンをマッチさせること)を使うことで特定のファイルだけを HTTPリダイレクトさせることも可能です。