犬ターネット

REDIRECT_*** は mod_rewrite 経由時に設定される

2011-01-21 php

.htaccess がこんなんで、

RewriteEngine On
RewriteBase /path/to
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . test.php [QSA,L]

test.php がこんなん。

<?php
foreach( $_SERVER as $key => $val ) {
  if ( strpos( $key, 'REDIRECT_' ) === 0 ) {
    echo "{$key} : {$val}";
  }
} 

存在するファイルやディレクトリ以外のアクセスは、test.php を経由する設定。

で、test.php で REDIRECT_*** のサーバ変数を表示させるだけ。

こんな感じでリクエスト送ってみる。レスポンステキストは何もない。

$ curl http://172.22.0.104/path/to/test.php
$ (何もでない)

次に、適当なファイル名にしてアクセスしてみる。こんどはレスポンスが返ってきた。

$ curl http://172.22.0.104/path/to/unko.txt
REDIRECT_SCRIPT_URL : /path/to/unko.txt
REDIRECT_SCRIPT_URI : http://172.22.0.104/path/to/unko.txt
REDIRECT_STATUS : 200
REDIRECT_URL : /path/to/unko.txt

要は、mod_rewrite を経由したときだけ、REDIRECT_*** のサーバ変数が設定される、ということだった。サーバ変数いじっててはまったので覚えておく。


過去は遡れるが未来のことはわからない

とりあえず