違いは何ですか $_SERVER['REQUEST_URI']
および$_GET['q']
(Drupalで使用されます)?
このURLの例を考えると:
http://www.example.com/some-dir/yourpage.php?q=bogus&n=1
$_SERVER['REQUEST_URI']
は以下を提供します:
/some-dir/yourpage.php?q=bogus&n=10
一方、$_GET['q']
は以下を提供します:
bogus
言い換えると、 $_SERVER['REQUEST_URI']
は、 querystring を含む完全なリクエストパスを保持します。そして、$_GET['q']
は、クエリ文字列のパラメータq
の値を提供します。
Drupalのコンテキストでは、違いはクリーンURLがオンかどうかによって異なります。
それらをオフにすると、$_SERVER['REQUEST_URI']
は/index.php
と呼ばれるページの完全パスを持ち、$_GET["q"]
はq
に割り当てられたものだけを持ちます。
これらをオンにすると、他の引数なしでほぼ同じになりますが、$_GET["q"]
には先頭の/
がありません。デフォルトの.htaccessの末尾を見て、何が起こっているのかを確認してください。また、ページャーがアクティブな場合など、追加の引数がページに渡される場合にも異なります。
PHPマニュアルは両方を非常によく説明しています:
http://php.net/manual/en/reserved.variables.server.php #REQUEST_URI
http://php.net/manual/en/reserved.variables.get.php #$ _GET ["q"]変数の場合