スクリプトそれ自身を取得する$_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の環境ではこのようになりました。