question:1102946513:PATH_INFOの使い方
質問者のska-kenさん向け。
$_SERVER
は、サーバ(通常はapache)が自動的に設定してくれる変数の連想配列。
example.com/ ├AAA.php ├BBB.php ├BBB/ │└CCC.php └CCC.php
こ〜んな感じのディレクトリ・ファイル構成だとすると。
DirectryIndex CCC.php
の場合(.htaccessのDirectryIndexは、ディレクトリへのアクセスの場合に、転送するファイルを指定する)- example.com/AAA/aaa/bbb/へのアクセスは、example.com/AAAというディレクトリが存在しないので、example.com(ルートディレクトリ)へのアクセスとなる。
- example.com/CCC/aaa/bbb/へのアクセスも、example.com/CCCというディレクトリが存在しないので、example.com(ルートディレクトリ)へのアクセスとなる。(動作は上と同じ)
- example.com/AAA.php/aaa/bbb/へのアクセスの場合、当然AAA.phpへのアクセスになり、
$_SERVER['PHP_INFO']
は/AAA/aaa/bbb/
。
Options +MultiViews
の場合(+MultiViews
は、コンテンツネゴシエーションを有効にする)- example.com/AAA/aaa/bbb/へのアクセスは、example.com/AAAというディレクトリが存在しないので、example.com/AAA.phpへのアクセスとなる。
$_SERVER['PHP_INFO']
は/aaa/bbb/
- example.com/BBB/aaa/bbb/へのアクセスは、example.com/BBBというディレクトリが存在し、example.com/BBB/aaaというディレクトリ・ファイルが存在しないので、example.com/BBB(ディレクトリ)へのアクセスとなり、example.com/BBB/CCC.phpへのアクセスとなる。
$_SERVER['PHP_INFO']
は/aaa/bbb/
- example.com/AAA/aaa/bbb/へのアクセスは、example.com/AAAというディレクトリが存在しないので、example.com/AAA.phpへのアクセスとなる。
てな感じで、$_SERVER['PHP_INFO']
を使うと、単純な引数なら簡単に処理に組み込める。
単にURLをスッキリさせたいのであれば、mod_rewriteよりもはるかに効率よいです(正規表現が必要な複雑な処理を行なう場合を除く)。