2011-01-19 2 views
21

В чем разница между $_SERVER['REQUEST_URI'] и $_GET['q'] (что используется в Drupal)?

+23

Хм .. это две совершенно разные вещи? Я думаю, вам нужно добавить некоторый контекст –

ответ

106

Учитывая этот пример URL:

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-адреса включены или нет.

С ними прочь, $_SERVER['REQUEST_URI'] будет иметь полный путь к странице, как называется ж//index.php, в то время как $_GET["q"] будет просто то, что относится к q.

С их помощью они будут почти идентичными без других аргументов, но $_GET["q"] будет отсутствовать ведущий /. Посмотрите на конец по умолчанию .htaccess, чтобы узнать, что происходит. Они также будут отличаться, если дополнительные аргументы передаются на страницу, например, когда активен пейджер.

+3

Это единственный ответ, который решает начальную причину вопроса (переписывание URL); вместо того, чтобы просто давать довольно очевидные определения суперглобальных php. Не поймите меня неправильно, другие ответы очень правильны сами по себе, но этот ответ дает некоторую предысторию вопроса и действительно должен иметь больше upvotes! – Levit

Смежные вопросы