wp-settings.php (3) $_SERVER['REQUEST_URI']
「wp-settings.php」の続きをみていきます。今回は,IISサーバでは$_SERVER['REQUEST_URI'] が直接取得できないので、間接的に取得する方法をみていきます。$_SERVER['REQUEST_URI']には、「ページにアクセスするために指定された URI」が代入されます。例えば、「/index.php?id=10」などパラメータも含まれます。 ※wordpress2.71で解析しています。
unset( $wp_filter, $cache_lastcommentmodified, $cache_lastpostdate );
これは変数を検索かけたりしたのですが、よくわかりませんでした。後々調べたいと思います。
/** * The $blog_id global, which you can change in the config allows you to create a simple * multiple blog installation using just one WordPress and changing $blog_id around. * * @global int $blog_id * @since 2.0.0 */ if ( ! isset($blog_id) ) $blog_id = 1;コメントを訳してみると、「グローバル変数「$blog_id」を変えることにより、1つのwordpressインストールで複数のブログが作れますよ」みたいなことが書かれています。複数ブログは「wordpress MU」で通常は対応してなかったと思うのですが、このコメントみてるとできそうですね。ただ、$blog_idを検索かけて簡単に使用している箇所みたのですが、キャッシュ関連で使ってたりして複数ブログでどう使ってるのかよくわかりませんでした。まだ解析途中で流れが十分把握していないので、順に調査し「$blog_id」を使うときになったら詳しく記事にしようと思います。
// Fix for IIS, which doesn't set REQUEST_URI if ( empty( $_SERVER['REQUEST_URI'] ) ) { // IIS Mod-Rewrite if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) { $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL']; } // IIS Isapi_Rewrite else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL']; } else { // Use ORIG_PATH_INFO if there is no PATH_INFO if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) ) $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO']; // Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice) if ( isset($_SERVER['PATH_INFO']) ) { if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] ) $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO']; else $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO']; } // Append the query string if it exists and isn't null if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) { $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING']; } } } |
今回のメインです。$_SERVER['REQUEST_URI'] に関する処理です。 $_SERVER の説明をphp公式リファレンス(日本語)から引用します。
$_SERVER は、ヘッダ、パス、スクリプトの位置のような 情報を有する配列です。この配列のエントリは、Web サーバにより 生成されます。全ての Web サーバがこれら全てを提供する保障はありません
上記引用文で重要なのは、Webサーバにより生成され、何の情報を提供するかはwebサーバにより異なるということです。 wordpressのコードをみてみます。
と書かれています。 IISサーバのように、$_SERVER['REQUEST_URI']が取得できない場合は、他の処理で同じ内容を取得し$_SERVER['REQUEST_URI']に代入します。 具体的に、どのように値を取得し代入しているかみていきます。
$_SERVER['ORIG_PATH_INFO'] があれば、$_SERVER['PATH_INFO']に $_SERVER['ORIG_PATH_INFO']を代入します。
PATH_INFOとは、URL中のクエリー文字列をプログラム名の後にスラッシュ(/)をつけて指定するプログラミング技法、またはその技法を適用した際にクエリー文字列が保管される環境変数のことです。


