[Web関連]mod_rewriteでリダイレクトさせた場合のHTTPステータスコードWebサーバがApacheの場合、「.htaccess」ファイルにRedirectディレクティブを使ってリダイレクト先URLを記述することで、任意の場所へリダイレクトさせることができます。その際、Redirectディレクティブのオプションとして、「permanent」とか「temp」とか記述することで、リダイレクト時のHTTPステータスコードを指定できます。リダイレクトさせるときのHTTPステータスコードは、301か302です。Temporarily」(HTTP1.1ではFound)で一時的な移転を示すステータスコードです。ちなみに、以下のよーに書きます。http://www.example.net/tomoyo/上記の場合、sakuraディレクトリは301で、tomoyoディレクトリは302でリダイレクトします。このように、Redirectディレクティブを使う限り、このHTTPステータスコードは望みのままに指定可能です。(^_^;)Redirectではなく、mod_rewriteを使ってリダイレクトさせた場合は、どんなHTTPステータスコードが返されているのか?リダイレクトさせたいんなら、そのものすばりなRedirectディレクティブを使えばいいわけですけど、mod_rewriteを使っても同じ動作が実現可能です。[L]上記のようにリライトルールを記述すれば、sakura.htmlファイルへのアクセスを指定のURLに飛ばすことができます。mod_rewriteは、実際には存在しないURLに仮想的な実体を与えるのに使う記述ですから、こんなリダイレクト用途に使うのは、本来の用途から外れているのかもしれませんが...。書けることは書けますよね。このとき、果たしてどんなHTTPステータスコードが返されてリダイレクトされるのかな...?とちょいと疑問に思ったんです。いうわけで、HTTPレスポンスヘッダ確認ツールで調べてみました。)では、mod_rewriteを使ったリダイレクトでは、以下のようなHTTPレスポンスヘッダが返されるようです。charset=iso-8859-1どうやら、HTTPステータスコードは、302(一時的な移転)が返されるようです。301(永続的な移転)ではないのですね。この結果が、どんな環境でも一緒なのかどうかは分かりませんが...。ちなみに、本来の用途...というか、外部サイトへ飛ばすのではなく、自サイト内に仮想的なURLを作る用途でmod_rewriteを使った場合は、200が返されます。Found」となっているのは、HTTP1.1だからですね。(まあHTTPの仕様的には、コードより後の文字列には何を出力しても構わないらしいですが。MoeMoe」とかでも問題ないらしい。Redirect」というのがあって、これがまさに「一時的な移転」を示すんですけど、これを返さないのは、HTTP1.1で通信できないクライアントのためかな?......ちょっと脱線。mod_rewriteで外部サイトへ飛ばすよう記述すると、どうやら「302」でリダイレクトされるらしい、という結果でした。Apacheのリファレンスによると、Redirectディレクティブを使ってステータスコードを省略した場合も、302が返されるようです。この日記に対するコメント投稿を歓迎します。※本文中にURLは書けません。(書くと投稿が拒否されますのでご注意下さい。)※投稿内容は、実際にページ上に掲載される前に、管理者によって確認される設定にしている場合があります。その場合は、投稿後にその旨が表示されます。1~2日以内には表示されるはずですので、気長にお待ち願います。仕事トラックバックこのエントリーへのトラックバックURLを表示するにはここをクリック※スパム防止のため、トラックバックURLは別ウインドウで表示します。(JavaScriptが有効でないと表示されません。INFORMATIONSこのページの製作者は、にしし(西村文宏)です。このページの内容は真実であることが基本ですが、虚構や妄想が混じっていることも多々あります。(^_^;)リンクは歓迎致します。リンク用バナーも用意しています。必要であればご使用下さい。reserved.このサイトについてこのページは、スマートフォン・タブレット等のモバイル端末でもご覧頂けます。URLは端末に関係なく共通です。※このサイトは横幅768px未満で閲覧するとモバイル用、横幅768px以上で閲覧するとタブレット&PC用デザインになります。横幅920px以上での閲覧がお勧めです。古いブラウザ(特にIE7以下など)では横幅に関係なくレガシーデザインになります。