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

個人用ツール