Apacheメモ
提供: Astarisk Works Wiki
他のページにリダイレクトさせたい (Redirectディレクティブ)
あるURLでサービスしていたものの、システム構成等の変更に伴い別のURLへリクエストをリダイレクトしたいことがある。 そんなときにはRedirectディレクティブを使うとよい。
Redirect /リクエストパス リダイレクトURL
ここでリクエストパスは転送元のパス、リダイレクトURLは転送先のURLを指定する。
次の例ではhttp://myserver/hoge/foo.txt へのリクエストを行なうと、代わりに http://hogehoge.com/hoge/foo.txt をアクセスするようにレスポンスが帰る。
Redirect /hoge http://hogehoge.com/hoge
もし、レスポンスコード302(Moved Temporary)ではなく恒久的なリダイレクトステータス(301 Moved Permanently
)でリダイレクトさせたい場合には、次のようにpermanentを付ける。
Redirect permanent /hoge http://hogehoge.com/hoge
これはRedirectPermanent ディレクティブを使って次の様に書いても同じ
RedirectPermanent /hoge http://hogehoge.com/hoge
なお、Redirectディレクティブを使うにはmod_aliasをロードしておく必要がある。
詳しくはこちら→mod_alias - Apache HTTP サーバ
もっと柔軟に他のページにリダイレクトさせたい (mod_rewrite)
Redirectディレクティブでもだいたいの場合は対応可能だろうが、サイトの引っ越しでURLが変わる場合には旧サイトへの全てのリクエストを新サイトのトップページにリダイレクトしたい場合がある。
Redirectディレクティブではそのようなリダイレクトはできなくて、URLの途中のパスの付け替えしかできない。
もっと柔軟にリダイレクトさせるにはmod_rewriteを使えばよい。
mod_rewriteを利用するにはrewrite moduleをロードする必要がある。
次の例は全てのリクエストをMoved Parmanently(301)でhttp://www.asterisk-works.jp/wiki/index.phpにリダイレクトさせる。
RewriteEngine on RewriteRule ^/(.*)$ http://www.asterisk-works.jp/wiki/index.php [R=301,L]
もっと詳しい使い方は次のページが参考になる。 Apache : mod_rewriteリファレンス - dawgsdk.org