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