Test de redirección web
FR EN ES

Prueba tus redirecciones web y respuestas HTTP



La redirección 302

La redirección 302, o redirección temporal, indica al navegador y a los robots de los motores de búsqueda que la página visitada ha cambiado temporalmente de dirección. Los motores de búsqueda conservan la URL original en su índice.

Se utiliza normalmente para una página en mantenimiento, un test A/B o una promoción de tiempo limitado.


Redirección 302 en PHP

Colócalo al comienzo del archivo PHP, antes de cualquier salida HTML:

<?php
header("Location: https://www.ejemplo.net/directorio/pagina.php");
exit();
?>

Por defecto, PHP envía un código 302. Para ser explícito:

<?php
header("HTTP/1.1 302 Found");
header("Location: https://www.ejemplo.net/directorio/pagina.php");
exit();
?>


Redirección 302 con .htaccess (Apache)

Redirigir una página:

Redirect /directorio/pagina-a-redirigir.html https://www.ejemplo.net/directorio/pagina-destino.html

Redirigir un directorio:

Redirect /directorio https://www.ejemplo.net/directorio-destino

Redirigir un dominio:

Redirect / https://www.ejemplo.net/

Con mod_rewrite:

RewriteEngine On
RewriteRule ^pagina-antigua\.html$ /nueva-pagina.html [L,R=302]


Redirección 302 con Nginx

Redirigir una página:

location = /pagina-antigua.html {
    return 302 https://www.ejemplo.net/nueva-pagina.html;
}

Redirigir temporalmente un dominio completo:

server {
    server_name ejemplo.net;
    return 302 https://www.ejemplo.net$request_uri;
}


302, 303 y 307: ¿cuál es la diferencia?

Un punto técnico importante: cuando una petición POST recibe una respuesta 302, todos los navegadores cambian el método a GET antes de seguir la redirección. Este comportamiento no es conforme al RFC original, pero es universalmente adoptado. Puede causar problemas con formularios y APIs.

303 See Other — Formaliza este comportamiento: la redirección se realiza siempre en GET, independientemente del método original. Es el código recomendado tras procesar un formulario POST (patrón PRG: Post/Redirect/Get) para evitar el doble envío al recargar la página.

<?php
// Tras procesar un formulario POST:
http_response_code(303);
header("Location: https://www.ejemplo.net/confirmacion.php");
exit();
?>

307 Temporary Redirect — Igual que el 302, pero el método HTTP original (POST, PUT…) se conserva obligatoriamente. Úsalo en APIs REST para redirigir una petición POST conservando el cuerpo de la petición.

# Redirección de endpoint de API en .htaccess:
RewriteEngine On
RewriteRule ^api/v1/(.*)$ /api/v2/$1 [L,R=307]