スクリプトそれ自身を取得する$_SERVER
、例えば、$_SERVER['PHP_SELF']
などのアレです。これらはリダイレクトされたページではどのように値をもっているのか、実験しました。
ドキュメントルートに.htaccessを配置
.htaccess
ErrorDocument 404 /404.php
同じく、ルートに 404.php
404.php
<?php
http_response_code(404);
var_dump($_SERVER);
単なる実験コードなんで、これでいいでしょう。
では実際に、存在しないページにアクセスします。
http://example.com/missing.php
するとこのような結果になりました。
変数名 | 表示された値 |
---|---|
SCRIPT_FILENAME | /var/www/html/404.php |
REDIRECT_URL | /missing.php |
REQUEST_URI | /missing.php |
SCRIPT_NAME | /404.php |
PHP_SELF | /404.php |
REDIRECT_URL って初めて見ましたwww
クエリ文字列がついた時にどうなるかもあわせて実験。
http://example.com/missing.php?id=100
変数名 | 表示された値 |
---|---|
SCRIPT_FILENAME | /var/www/html/404.php |
REDIRECT_QUERY_STRING | id=100 |
REDIRECT_URL | /missing.php |
REQUEST_URI | /missing.php?id=100 |
SCRIPT_NAME | /404.php |
PHP_SELF | /404.php |
おおっー。こちらも初めまして、ですね。REDIRECT_QUERY_STRING
これらはもちろん、PHPの仕様とかじゃなくて、WEBサーバーの仕様・設定次第なので、どの環境でもこうなるものではありませんが、当方、CentOS, Apache2.2.4の環境ではこのようになりました。