Test de redirección web
FR EN ES

Prueba tus redirecciones web y respuestas HTTP



La redirección 301

La redirección 301, o redirección permanente, indica al navegador y a los robots de los motores de búsqueda que la página visitada ha cambiado definitivamente de dirección. Los motores de búsqueda actualizan su índice y transfieren el "peso" SEO a la nueva URL.


Redirección 301 en PHP

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

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://www.ejemplo.net/nueva-pagina.php");
exit();
?>


Redirección 301 con .htaccess (Apache)

Método sencillo con la directiva RedirectPermanent:

Redirigir una página:

RedirectPermanent /directorio/pagina-antigua.html https://www.ejemplo.net/nueva-pagina.html

Redirigir un directorio completo:

RedirectPermanent /directorio-antiguo https://www.ejemplo.net/directorio-nuevo

Redirigir un dominio completo:

RedirectPermanent / https://www.ejemplo.net/


Redirección 301 con mod_rewrite (.htaccess)

Más potente, mod_rewrite permite usar expresiones regulares. Ejemplos habituales:

Forzar HTTPS (HTTP → HTTPS):

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Forzar www (sin www → con www):

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Eliminar www (con www → sin www):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [L,R=301]

Redirigir una URL antigua a una nueva:

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


Redirección 301 con Nginx

En el archivo de configuración de Nginx (bloque server):

Redirigir una página concreta:

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

Forzar HTTPS:

server {
    listen 80;
    server_name ejemplo.net www.ejemplo.net;
    return 301 https://$host$request_uri;
}

Forzar www:

server {
    listen 443 ssl;
    server_name ejemplo.net;
    return 301 https://www.ejemplo.net$request_uri;
}

Eliminar www:

server {
    listen 443 ssl;
    server_name www.ejemplo.net;
    return 301 https://ejemplo.net$request_uri;
}


Nota: los códigos 307 (redirección temporal que conserva el método HTTP) y 308 (redirección permanente que conserva el método HTTP) también existen, pero se usan poco en la práctica.