WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

PATH_INFOとREQUEST_URIについて

   

PATH_INFOとREQUEST_URIの違い

いずれもサーバの環境変数だが、以下のような違いがある。

PATH_INFOとはリクエストされたスクリプトファイル名とクエリ文字列の間にあるパスの情報。
REQUEST_URIとはブラウザから送られてきたリクエストURI

例えば、URLが”http://localhost:3000/hoge/piyo?foo=bar”なら下表のとおりとなる。

PATH_INFO /hoge/piyo
REQUEST_URI /hoge/piyo?foo=bar

つまり、PATH_INFOはクエリ文字列を含まないが、REQUEST_URIは含む。

mod_rewrite使用時のPATH_INFOとREQUEST_URI

mod_rewriteを有効にしているときはPATH_INFOが取得できず、REQUEST_URIのみ取得可能となる。

例えば、WordPressはmod_rewriteを使っているが、このフロントコントローラ(index.php)に`exit($_SERVER[‘PATH_INFO’]);`などと書くと画面には何も表示されず、取得できていないことがわかる。
もしmod_rewriteを使っているシステムで、制御にPATH_INFOの値を利用している場合は意図しない動作をする可能性があるので注意が必要。

※mod_rewriteでPATH_INFOが使えないの理由はわかりません。

 - WEBサーバ構築 , , ,