2011-01-19 12 views
21

$_SERVER['REQUEST_URI']$_GET['q'](Drupalで使用される)の違いは何ですか?この例のURLを考える

+23

ええと。全く違う2つのことですか?私はあなたがいくつかの文脈を追加する必要があると思う。 –

答えて

106

http://www.example.com/some-dir/yourpage.php?q=bogus&n=10

$_SERVER['REQUEST_URI']はあなたを与える:

/some-dir/yourpage.php?q=bogus&n=10

$_GET['q']はあなたを与えるのに対し:

bogus

つまり、$_SERVER['REQUEST_URI']は、querystringを含む完全なリクエストパスを保持します。そして$_GET['q']は、クエリ文字列にパラメータqの値を与えます。

9

のDrupalのコンテキストでは、違いがいるかどうかによって異なりますクリーンURLが有効かどうか。彼らと

オフ$_GET["q"]がちょうどqに割り当てられているものはありますが、$_SERVER['REQUEST_URI']は、/ /index.phpワットと呼ばれるように、ページの完全なパスを持っています。

これらをオンにすると、他の引数なしでほぼ​​同じになりますが、$_GET["q"]には先頭の/がなくなります。デフォルトの.htaccessの最後を見て、何が起こっているのか見てみましょう。追加の引数がページに渡された場合(ページャーがアクティブな場合など)も異なります。

+3

これは、質問の最初の理由(URL書き換え)に取り組む唯一の答えです。むしろ明白なPHPスーパーグローバル定義を与えるのではなく、私を間違ってはいけない、他の答えはそれ自体では非常に正しいですが、この答えは質問の背景を提供し、本当により多くのupvotesを持っているはずです! – Levit

関連する問題