2011-03-11 31 views
15

He intentado hacer una redirección 301 correcta y no lo he hecho. No importa lo que intente, siempre es una redirección 302.PHP 301 ¿Redirigir, Imposible?

Devuelve una 302:

http_redirect("urlgoeshere", '', false, HTTP_REDIRECT_PERM) 

Devuelve una 302:

header("HTTP/1.1 301 Moved Permanently"); 
header("Location: urlgoeshere"); 

¿Puede alguien explicar por qué estos están regresando como 302 y no de 301 de? Servidor OS es Linux, ejecuta PHP/5.2.14. Inténtalo tú mismo.

Les daré una URL para que prueben. Estoy probando con YSlow y Googlebot.

Debe ser 301: http://www.fantasysp.com/player/mlb/Albert_Pujols/1486349

Firebug shows a 302 Code

+0

Funciona para mí: '$ curl http: //localhost/test.php -i' →' HTTP/1.1 301 Movido permanentemente' Necesitamos más información sobre su entorno. – deceze

+0

¿Estás en Windows, Linux o Mac? Aparentemente, IIS tiene algunos problemas ... –

+0

posible duplicación de [php 301 redirige realmente haciendo un redireccionamiento 302] (http://stackoverflow.com/questions/1562243/php-301-redirects-actually-doing-a-302-redirect) –

Respuesta

31

Bastante sencillo realidad:

header('Location: ' . $url, true, 301); 

enter image description here


Si estás usando FastCGI trate de hacer esto en su lugar:

header('Status: 301 Moved Permanently', true); 
header('Location: ' . $url); // or header('Location: ' . $url, true, 301); 
+0

Intenté esto y todavía no funcionó. Agregué la URL a una página en vivo que muestra 302 para mí. ¿Ves el 302 también? – brant

+0

@brant: Veo 301. ¿Qué está utilizando para verificar el código de respuesta HTTP? –

+0

Interesante. Estoy probando con YSlow en Firefox y mirando la respuesta del robot de Google en Herramientas para webmasters. Ambos muestran 302 para mí. – brant

Cuestiones relacionadas