$_SERVER['REQUEST_URI'] => /test.php
$_SERVER['SCRIPT_NAME'] => /test.php
$_SERVER['PHP_SELF'] => /test.php
SCRIPT_NAME 과 PHP_SELF 는 기본적으로 같다고 보면 좋을 것 같다.
Example 1. 요청된 URL 이 파일이름을 포함할때다음과 같을때:
http://example.com/test.php/foo/bar
[REQUEST_URI] => /test.php/foo/bar
[PHP_SELF] => /test.php/foo/bar
[SCRIPT_NAME] => /test.php
Example 2. REQUEST_URI 는 파라미터를 포함하고, SCRIPT_NAME, PHP_SELF는 파라미터를 포함하지 않는다.:
http://example.com/test.php?foo=bar
[REQUEST_URI] => /test.php?foo=bar
[PHP_SELF] => /test.php
[SCRIPT_NAME] => /test.php
Example 3. 서버측 리다이렉션이 동작했을 때 (for example mod_rewrite on apache):
웹브라우저 : http://example.com/test.php
실제서버경로 : /htdocs/test2.php
[REQUEST_URI] => /test.php
[PHP_SELF] => /test2.php
[SCRIPT_NAME] => /test2.php
Example 4. 브라우저에서 없는URL을 요청할 경우 404 Error 페이지를 보여줄때 REQUEST_URI 는 클라이언트의 요청주소를 알수있다.
Using apache directive ErrorDocument 404 /404error.php
http://example.com/test.php
[REQUEST_URI] => /test.php
[PHP_SELF] => /404error.php
[SCRIPT_NAME] => /404error.php
** 관련 레퍼런스 : https://stackoverflow.com/a/326331