в чем разница между $_SERVER['REQUEST_URI']
и $_GET['q']
(которая используется в Drupal)?
В чем разница между $_SERVER ['REQUEST_URI'] и $_GET ['q']?
Ответ 1
С учетом этого примера 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
в запросе.
Ответ 2
В контексте Drupal разница будет зависеть от того, включены ли чистые URL-адреса.
С их помощью $_SERVER['REQUEST_URI']
будет иметь полный путь к странице, как называется w//index.php
, а $_GET["q"]
будет иметь только то, что назначено q
.
С их помощью они будут почти идентичны без других аргументов, но $_GET["q"]
будет отсутствовать ведущий /
. Посмотрите на конец по умолчанию .htaccess, чтобы узнать, что происходит. Они также будут отличаться, если дополнительные аргументы передаются на страницу, например, когда активен пейджер.
Ответ 3
Руководство по PHP объясняет оба достаточно хорошо:
http://php.net/manual/en/reserved.variables.server.php # REQUEST_URI
http://php.net/manual/en/reserved.variables.get.php # для переменной $_GET [ "q" ]