Generador de redirecciones 301

Elige qué redirigir y escribe tu dominio. Obtienes reglas para el .htaccess de Apache y para un bloque server de Nginx, listas para pegar, con los comandos para probarlas.

Qué redirigir
Servidor web
.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Pon las reglas al principio del archivo .htaccess de la carpeta raíz de tu sitio. Apache necesita mod_rewrite y AllowOverride para esa carpeta; la mayoría del hosting compartido tiene ambos.

Pruébalo

shell
# .htaccess is read on every request: no reload needed
curl -I http://example.com/

La respuesta debe ser el código de estado que elegiste, con una cabecera Location que apunte a la dirección nueva.

La configuración de Nginx necesita un servidor donde tengas root. Un VPS pequeño ejecuta Nginx, tu sitio y sus certificados. Desde 3,02 € al mes hoy, entre 2226 servidores.

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo se calcula

Una redirección es una respuesta del servidor con un código de estado 3xx y una cabecera Location. El navegador, o un buscador, pide entonces la dirección nueva. El generador escribe la redirección lo antes posible: en Nginx, un bloque server que no hace nada más; en Apache, reglas de reescritura al principio de .htaccess.

# Apache, .htaccess
RewriteRule ^old-page\.html$ /new-page [R=301,L]

# Nginx
location = /old-page.html {
    return 301 /new-page;
}

Apache compara con una expresión regular, así que los puntos y otros caracteres especiales de una ruta se escapan, y la barra inicial se omite porque .htaccess la quita. Nginx compara una location exacta como texto plano. Ambos conservan la cadena de consulta del visitante salvo que la dirección antigua tuviera una propia. Las reglas de HTTPS y www van a la dirección final en un solo paso, en lugar de pasar por dos redirecciones seguidas.

Ejemplo

Mueves example.com a www.example.com: las peticiones a http://example.com/blog, http://www.example.com/blog y https://example.com/blog reciben todas una sola 301 a https://www.example.com/blog. Solo https://www.example.com se sirve con normalidad.

Qué código de estado usar

CódigoSignificadoÚsalo para
301Movido permanentementeUna página o un sitio que se mudó para siempre. Los buscadores pasan el posicionamiento de la dirección antigua a la nueva.Una página o un sitio que se mudó para siempre. Los buscadores pasan el posicionamiento de la dirección antigua a la nueva.
302Encontrado, temporalmente en otro sitioUn desvío corto, como una página de ofertas o un mantenimiento. La dirección antigua se queda en los resultados de búsqueda.Un desvío corto, como una página de ofertas o un mantenimiento. La dirección antigua se queda en los resultados de búsqueda.
307Temporal, mismo métodoComo 302, pero un formulario enviado con POST se vuelve a enviar con POST.Como 302, pero un formulario enviado con POST se vuelve a enviar con POST.
308Permanente, mismo métodoComo 301, pero mantiene POST. Útil para una API o un endpoint de formulario que se mudó.Como 301, pero mantiene POST. Útil para una API o un endpoint de formulario que se mudó.

Preguntas

¿Cuál es la diferencia entre una redirección 301 y una 302?

Una 301 dice que la dirección se mudó para siempre: los navegadores la recuerdan y los buscadores sustituyen la dirección antigua por la nueva. Una 302 dice que el cambio es temporal, así que la dirección antigua conserva su lugar. Usa 301 para un dominio nuevo, HTTPS o una página renombrada; Google trata de todos modos como una 301 una 302 mantenida mucho tiempo.

¿Debo redirigir www a sin www o al revés?

Cualquiera de las dos sirve para los buscadores, siempre que elijas una y redirijas la otra hacia ella. La forma corta es más fácil de escribir; www facilita fijar cookies solo para el sitio y apuntar el nombre a un CDN con un registro CNAME.

¿Por qué mi redirección entra en bucle?

Normalmente porque HTTPS termina en un proxy o CDN y el servidor ve cada petición como http://, así que redirige incluso las https://. Marca la opción de proxy para comprobar en su lugar la cabecera X-Forwarded-Proto. En Cloudflare, el modo SSL Full (strict) evita el problema. Vacía la caché del navegador tras arreglarlo: los navegadores recuerdan las redirecciones 301.

¿Nginx lee archivos .htaccess?

No. Nginx no tiene archivos de configuración por carpeta, así que las reglas de un archivo .htaccess hay que escribirlas en la configuración del servidor, como en la pestaña de Nginx de aquí, y recargar Nginx. Eso requiere acceso al servidor, que un VPS da y el hosting compartido normalmente no.