株式会社エスロジカル
株式会社エスロジカル
SSL証明書(3,300円/1年~ DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

Apache:Redirect ディレクティブ

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

本技術ドキュメントは、2002~2004年頃に作成したものが多いです。
内容が古くなっていることもあるかと思いますが、ご了承ください。

サイフにやさしいSSL証明書
【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。


◆ はじめに

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. ご感想をお書きください。