mod_rewriteのREQUEST_FILENAMEはSCRIPT_FILENAMEに置き換える
表題の通りですが、サーバーによっては「REQUEST_FILENAME」という環境変数を持っていない場合があるためです。
「そんなことしちゃって大丈夫なの!?」と思われるかもしれませんが、大丈夫! mod_rewriteの公式ドキュメントに次のように書いてあります。
The variables SCRIPT_FILENAME and REQUEST_FILENAME contain the same value - the value of the filename field of the internal request_rec structure of the Apache server. The first name is the commonly known CGI variable name while the second is the appropriate counterpart of REQUEST_URI (which contains the value of the uri field of request_rec).
訳はこんな感じ。
SCRIPT_FILENAME と REQUEST_FILENAME は同じ値を持っています。 どんな値かというと、Apacheサーバーの request_rec 構造体(まぁ、データの塊)内の filenameフィールド値のことなんです。 SCRIPT_FILENAMEのほうはご存知CGI変数で、REQUEST_FILENAMEのほうは REQUEST_URIとよく似た値です。(REQUEST_URIはrequest_rec 構造体内の uriフィールド値と同じ値です)
ということです。
PHPでやってる人はphpinfo()で見てみるといいですよ。 「$_SERVER[‘REQUEST_FILENAME’]」っていう値がない場合があるので。(もしかしてPHPには提供されていない値かな? 知っている人がいたら教えてください)
2010-04-08