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_*** のサーバ変数が設定される、ということだった。サーバ変数いじっててはまったので覚えておく。