2012-05-10 16 views
21

¿Es esto ubicación relativa html header absolutamente compatible con todos los navegadores en todas las plataformas? ¿Algún estándar?compatibilidad con la ruta relativa de la ubicación del encabezado

Location: some_script.php?la=2&po=2030 

quiero decir, ¿siempre redirigir a some_script.php en el directorio actual o no?

+0

ya que es PHP, el navegador ni siquiera saber sobre la cabecera, sólo se da cuenta está siendo redirigido, porque PHP se ejecuta en el servidor. – 11684

+3

@ 11684: El navegador del cliente recibirá absolutamente un encabezado de ubicación. ¿De qué otra manera crees que decide cambiar su ubicación? – webbiedave

+1

@ 11684 Su error. PHP se ejecuta en el servidor, sí. Pero PHP envía el encabezado al navegador (cliente) y el cliente hace lo que quiera con él. –

Respuesta

17

La norma sería la siguiente:

header('Location: http://www.mywebsite.com/yourpage.php?id=32', TRUE, 302); 

Pero para responder a su pregunta, sí, va a redirigir a la página de X en la carpeta actual si usted no pone una barra en un primer momento o una URL completa.

Aquí hay una idea que le sugiero que haga para cada sitio web que haga. En el archivo principal (el archivo php principal se utiliza como config o lo que sea), crear algo así:

define('URL', 'http://www.mywebsite.com/'); 

Así que cuando se crea una redirección, un enlace o lo que sea, esto se hace:

header('Location: '.URL.'yourpage.php?id=32', TRUE, 302); 

EDIT: noviembre de 2017. Como señala @jordanbtucker a continuación, la especificación de HTTP se ha actualizado en junio de 2014 (esta publicación es de 2012) para permitir URI relativos en el encabezado de la ubicación.

+1

sí, ya uso la variante ** relativa ** y me funciona, pero dudo que no funcione para todos los usuarios. Puedo hacer que se agregue parte de la URL para obtener una ruta absoluta, pero dará algunos problemas para depurar este elemento en la máquina local, porque en el we some_script.php siempre está en http://domain.com/some_script.php y no es el problema para agregar SERVER_HOST a url, pero en el script de máquina local en la subcarpeta ... – abrahab

+1

Ok. Entonces sugiero echar un vistazo a http://tools.ietf.org/html/rfc2616#section-10.3.3. La mejor manera, la mejor manera y la forma en que se supone que debe funcionar es que debe proporcionar la URL completa. –

+0

@abrahab ¿No entiendo por qué es un problema tener la URL completa en una subcarpeta de máquina local? –

Cuestiones relacionadas