株式会社エスロジカル
株式会社エスロジカル
セキュリティプロダクツ提供
Web開発、システム開発、UNIXシステム構築
個人情報保護方針

技術ドキュメント

技術ドキュメント目次 -> Apache -> Redirect ディレクティブ

本技術ドキュメントは、ここしばらくメンテナンスをしておりません。
内容が古くなっている可能性などございますこと、ご理解を頂けますようお願いいたします。



[オススメ] 国内最安のSSL証明書(RapidSSL 2880円、ジオトラスト 10500円、ベリサイン 39900円)
[オススメ] SSL証明書のアフィリエイトプログラム(最大11700円/1件の報酬を獲得いただけます)

◆ はじめに

httpd.conf や .htaccess の中で Redirectディレクティブを使用すると、
リダイレクト(CGI等から、Location: のヘッダを出力して、別のURLに遷移する動作)の
制御を行うことができるようになります。

なお、
Redirectディレクティブを使用するには、
mod_alias が組み込まれている必要がありますが、
このモジュールは標準で組み込まれるので、たいていの環境では何も気にせずに使用可能です。

◆ 設定例

Redirect permanent /301.html http://anotherhost/301.html
Redirect temp      /302.html http://anotherhost/302.html
Redirect seeother  /303.html http://anotherhost/303.html

(permanent, temp, seeother は省略可能です。)


それぞれ、/***.html へのアクセスがあったときに、
anotherhost という別のホストの同名のファイルにリダイレクトするように設定していますが、
Redirect の次に書いてある指定によって、
リダイレクトのレスポンスコードが次のように異なります。

permanent 
  レスポンスコード301(Moved Permanently)でリダイレクトします。
  リソースが恒久的に移動した時に使用します。 

temp
  レスポンスコード302(Found)でリダイレクトします。
  デフォルトでは動作をします。 

seeother
  レスポンスコード303(See Other)でリダイレクトします。


IEなど、通常のブラウザからアクセスしたときは、
レスポンスコードの違いによって動作がことなることはありませんが、
(どの場合も、指定した URLに遷移します。)
特殊な proxyサーバーを用いている場合などは、
レスポンスコードによって動作が異なる場合がありますので、
覚えておくと便利なこともあるかもしれません。

なお、
/301.html や /302.html というファイルが実際に存在していなくても、
正常に機能します。

また、
RedirectMatch というディレクティブを用いることで、
正規表現を使った リダイレクトのルールを設定することもできます。

RedirectMatch (.*)\.gif$ http://anotherhost/$1.jpg


最後に、
それぞれの設定がどのようなレスポンスヘッダを返すか、
telnet コマンドを使用して確認してみます。

permanent の指定がされたとき
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
HEAD /301.html HTTP/1.0

HTTP/1.1 301 Moved Permanently
Date: Fri, 23 Aug 2002 02:12:07 GMT
Server: Apache/1.3.26 (Unix) PHP/4.2.2
Location: http://anotherhost/301.html
Connection: close
Content-Type: text/html; charset=iso-8859-1

Connection closed by foreign host.
#


temp の指定がされたとき
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
HEAD /302.html HTTP/1.0

HTTP/1.1 302 Found
Date: Fri, 23 Aug 2002 02:13:48 GMT
Server: Apache/1.3.26 (Unix) PHP/4.2.2
Location: http://anotherhost/302.html
Connection: close
Content-Type: text/html; charset=iso-8859-1

Connection closed by foreign host.
#


seeother の指定がされたとき
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
HEAD /303.html HTTP/1.0

HTTP/1.1 303 See Other
Date: Fri, 23 Aug 2002 02:14:04 GMT
Server: Apache/1.3.26 (Unix) PHP/4.2.2
Location: http://anotherhost/303.html
Connection: close
Content-Type: text/html; charset=iso-8859-1

Connection closed by foreign host.
#




■ Apache についての他のドキュメント


■ 他のグループのドキュメント

Apache  /  Linux  /  FreeBSD  /  OpenSSL  /  Perl  /  HTTPプロトコル  /  Jakarta Tomcat  /  Java  /  NetBSD  /  Oracle  /  PostgreSQL  /  UNIX の C言語  /  UNIX のコマンド  /  Windows  /  bind  /  システム運用TIPS

アンケートにご協力をお願いいたします。

1. この技術ドキュメントへの評価をご選択ください。
大変良い  良い  普通  悪い  大変悪い  ノーコメント

2. ご感想をご自由にお書きください。



自社運営サイト: SSL証明書 / 改ざん検出 / 秘密分散法 / 暗号化ソフト / OpenIDサイト一覧 / IPアドレス表示 / リンク切れチェック / RapidSSL / ジオトラスト / ベリサイン / SSL

Copyright (C) 2006-2008 Slogical Corporation. All Rights Reserved.
ご意見などは、こちらのお問い合わせ用ページ からお願いいたします。

本サイト上の文書で記載または紹介している会社名、商品名は一般に各社の商標または登録商標です。
本サイト上の文書中では、TM マークおよび R マークを明記していない場合があります。