2011-06-26 21 views
35

Imprimí $ _SERVER, y descubrí que $ _SERVER['REDIRECT_URL'] frente a $_SERVER['REQUEST_URI'] tienen los mismos valores. ¿Cuál es la diferencia entre los dos?

Respuesta

42

REQUEST_URI es el camino URI solicitado y consulta tal como se utiliza en el HTTP request line. REDIRECT_URL is created by Apache cuando una redirección interna ocurre: las variables

REDIRECT_ de entorno se crean a partir de las variables de entorno que existían antes de la redirección. Se renombran con un prefijo REDIRECT_, es decir, HTTP_USER_AGENT se convierte en REDIRECT_HTTP_USER_AGENT.

REDIRECT_URL, REDIRECT_STATUS y REDIRECT_QUERY_STRING están garantizados para ajustar, y las otras cabeceras se establecerá sólo si existían antes de la condición de error.

Tenga en cuenta que REDIRECT_URL sólo hace contener la ruta URI.

+3

'REDIRECT_URL' devuelve una URL normal, p. '/ review', por otro lado,' REQUEST_URL' regresa incluyendo cadena de consulta, p. '/ review? page = 4' – AlbertSamuel

+0

excelente estaba atascado por mucho tiempo –

+0

@AlbertSamuel" 'REQUEST_URL'" - Debería ser 'REQUEST_URI' (con un' I'). – MrWhite

15

$_SERVER['REDIRECT_URL'] solo está disponible en algunos servidores en algunos casos. Use $_SERVER['REQUEST_URI'] en su lugar.

+2

Tenga en cuenta que puede ser que tengan diferentes comportamientos, ya que REQUEST_URI contiene la cadena de consulta! (Tuve un problema con mi API) – Miguel

11

REQUEST_URI también cambia caracteres especiales como espacios para "20%", etc.

Cuestiones relacionadas