2011-01-19 12 views
21

¿cuál es la diferencia entre $_SERVER['REQUEST_URI'] y $_GET['q'] (que se usa en Drupal)?

+23

Um .. son dos cosas completamente diferentes? Creo que necesitará agregar algún contexto –

Respuesta

106

Teniendo en cuenta este ejemplo url:

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

$_SERVER['REQUEST_URI'] te dará:

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

Mientras $_GET['q'] te dará:

bogus

En otras palabras, $_SERVER['REQUEST_URI'] contendrá la ruta de solicitud completa, incluido el querystring. Y $_GET['q'] le dará el valor del parámetro q en la cadena de consulta.

9

En el contexto de Drupal, la diferencia dependerá de si las URL limpias están activadas o no.

Con ellos fuera, $_SERVER['REQUEST_URI'] tendrá la ruta completa de la página como se llama w//index.php, mientras $_GET["q"] sólo tendrá lo que se asigna a q.

Con ellos encendidos, serán casi idénticos sin otros argumentos, pero $_GET["q"] faltará el / principal. Mire hacia el final del .htaccess predeterminado para ver qué está pasando. También serán diferentes si se pasan argumentos adicionales a la página, por ejemplo, cuando un buscapersonas está activo.

+3

Esta es la única respuesta que aborda el motivo inicial de la pregunta (reescritura de url); en lugar de simplemente dar las definiciones más bien obvias de superglobales de php. No me malinterpreten, las otras respuestas son muy correctas en sí mismas, pero esta respuesta proporciona algunos antecedentes a la pregunta y realmente debería tener más votos favorables. – Levit

Cuestiones relacionadas