Apache:Redirect ディレクティブ
技術ドキュメント目次 -> Apache -> Redirect ディレクティブ本技術ドキュメントは、2002~2004年頃に作成したものが多いです。
内容が古くなっていることもあるかと思いますが、ご了承ください。
【低価格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 についての他のドキュメント
- インストール
- htpasswd コマンド
- .htで始まるファイル(ちょっとしたメモ)
- Apache Bench(パフォーマンス測定)
- CGIのnphスクリプト
- ErrorDocument ディレクティブ
- ProxyPass ディレクティブ
- Redirect ディレクティブ
- mod_asisモジュール
- mod_perlモジュール
■ 他のグループのドキュメント
Apache / Linux / FreeBSD / OpenSSL / Perl / HTTPプロトコル / Jakarta Tomcat / Java / NetBSD / Oracle / PostgreSQL / UNIX の C言語 / UNIX のコマンド / Windows / bind / システム運用TIPS