Prueba tus redirecciones web y respuestas HTTP
La redirección en PHP
PHP envía cabeceras HTTP mediante la función header(). Debe llamarse antes de cualquier salida, incluso los espacios o saltos de línea situados antes de la etiqueta <?php.
Redirección permanente 301 en PHP
Colócalo al inicio del archivo:
Sintaxis moderna (PHP 5.4+, recomendada):
<?php
http_response_code(301);
header("Location: https://www.ejemplo.net/nueva-pagina.php");
exit();
?>
Sintaxis alternativa (compatible con todas las versiones de PHP):
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://www.ejemplo.net/nueva-pagina.php");
exit();
?>
Redirección temporal 302 en PHP
Por defecto, PHP envía un código 302 cuando se usa header("Location: ..."):
<?php
header("Location: https://www.ejemplo.net/directorio/pagina.php");
exit();
?>
Para ser explícito (recomendado):
<?php
http_response_code(302);
header("Location: https://www.ejemplo.net/directorio/pagina.php");
exit();
?>
Redirección condicional en PHP
Redirigir según el idioma del navegador:
<?php
$idioma = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if ($idioma == 'es') {
header("Location: https://www.ejemplo.net/es/");
exit();
}
?>
Redirigir conservando los parámetros GET:
<?php
$params = !empty($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : '';
http_response_code(301);
header("Location: https://www.ejemplo.net/nueva-pagina.php" . $params);
exit();
?>