PHP header redirect 301 - ¿cuáles son las implicaciones?


Tengo domain.com. Si el usuario ha iniciado sesión, debe cargarse automáticamente domain.com/option-X donde X es una opción predefinida del usuario.

Por lo tanto, hago esto en la parte superior del índice.php:

header("Location: /option-X"); 

Pero, si el usuario no está conectado, simplemente elijo automáticamente la primera opción como esta:

header("HTTP/1.1 301 Moved Permanently"); 
header("Location: /option-a"); 

Por lo tanto, tengo dos preguntas con respecto a las implicaciones de hacerlo:

  1. Dado que los rastreadores de los motores de búsqueda no estarán conectados, siempre lo harán get domain.com/option-a - ¿les afecta que tenga un encabezado 301?
  2. ¿Cuál podría ser la carga de cpu del servidor de hacer esas redirecciones? No se como hacer una prueba de ello. El sitio actual (que no tiene redirecciones) tiene alrededor de 100k visitas diarias.
Author: Andres SK, 2011-09-06

5 answers

El efecto del 301 sería que los motores de búsqueda indexarán /option-a en lugar de /option-x. Lo cual es probablemente una buena cosa ya que /option-x no es accesible para el índice de búsqueda y por lo tanto podría tener un efecto positivo en el índice. Solo si usas esto sabiamente; -)

Después de la redirección poner exit (); para detener el resto del script para ejecutar

header("HTTP/1.1 301 Moved Permanently"); 
header("Location: /option-a"); 
exit();
 72
Author: Roel Veldhuizen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-06 18:57:45

Esto es mejor:

<?php
//* Permanently redirect page
header("Location: new_page.php",TRUE,301);
?>

Solo una llamada incluyendo el código 301. También observe la ruta relativa al archivo en el mismo directorio (no " / dir/dir / new_page.php", etc.), que todos los navegadores modernos parecen soportar.

Creo que esto es válido desde PHP 5.1.2, posiblemente anterior.

 23
Author: Gary Samad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-04 00:56:42

Asegúrese de que die() después de su redirección, y asegúrese de hacer su redirección TAN PRONTO COMO SEA POSIBLE mientras se ejecuta su script. Se asegura de que no más consultas de base de datos (si algunas) no se desperdicien por nada. Ese es el único consejo que puedo darte

Para los motores de búsqueda, 301 es el mejor código de respuesta

 2
Author: genesis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-06 18:53:25

Los motores de búsqueda como 301 redirige mejor que un 404 o algún otro tipo de redirección del lado del cliente, no se preocupe allí.

El uso de CPU será mínimo, si desea guardar aún más ciclos podría intentar manejar la redirección en apache usando htaccess, entonces php ni siquiera tendrá que involucrarse. Si desea cargar un servidor de prueba, puede usar ab que viene con apache, o httperf si está buscando una herramienta de prueba más robusta.

 2
Author: profitphp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-06 18:53:33

Solo un consejo: usar http_response_code es mucho más fácil de recordar que escribir el encabezado completo:

http_response_code(301);
header('Location: /option-a'); 
exit;
 2
Author: the_nuts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-14 18:37:23