LoginSignup
3
4

More than 5 years have passed since last update.

リダイレクトされたページで、SERVER変数ってどうなるのか?

Last updated at Posted at 2015-04-12

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

3
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4