General / febrero 25, 2020

Guía definitiva sobre las redirecciones 301 en htaccess

Como que al parecer no me animo hacer cosas de web (aunque tengo cosas pensadas pero poco tiempo) creo que la mejor forma es empezar por algo que bueno, es más de sistemas pero es necesario para nuestras webs.

Así que hoy os traigo una guía definitiva sobre todo tipo de redirecciones más comunes que podemos utilizar a diario para redirigir dominios, enlaces, etc.

¿Qué es una redirección 301?

La redirección 301 no es más que una orden interna donde indicamos que cuando las personas accedan a una URL especifica -o no, ya lo veremos- se les redirija a otra URL.

¿Qué es el fichero .htacess?

El nombre del fichero viene del inglés Hypertext Access y se trata de un fichero de configuración utilizado de servidores web Apache. Este fichero permite configurar políticas de acceso a los directorios y archivos de una web para realizar configuraciones como redirecciones.

Así que tras esta explicación sencilla de que es una redirección y un poco de información sobre el fichero .htaccess vamos al lío.

Módulo rewrite

Para que .htaccess funcione correctamente, es necesario que en nuestro servidor tengamos el mod_rewrite activado. Este módulo permite crear direcciones URL alternativas a las dinámicas generadas por la programación de nuestras webs de tal modo que sean más legibles y fáciles de recordar.

Todas las reglas que vamos a ver para redireccionar necesitan tener este módulo activado, así que para evitar problemas, es recomendable ejecutar las redirecciones de la siguiente forma:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond [CONDICIÓN]
RewriteRule [REGLA]
</IfModule>

De todos modos, en este tutorial únicamente vamos a poner las condiciones y las reglas en código para no tener que repetir todo el código demasiadas veces y podernos centrar en el código necesario.

Todas las reglas que verás a continuación, únicamente deberás de modificar el valor «midominio.com» por tu dominio (sin las www) a menos que lo especifiquemos en el apartado que toque.

Redireccionar sin www a con www

A veces nos va interesar redireccionar de midominio.com a www.dominio.com, para ello usaremos:

RewriteCond %{HTTP_HOST} ^midominio.com$
RewriteRule (.*) http://www.midominio.com/$1 [R=301,L]

Si tenemos HTTPS podemos ponerlo también así:

RewriteCond %{HTTP_HOST} ^midominio.com$
RewriteRule (.*) http://www.midominio.com/$1 [R=301,L]

Redireccionar con www a sin www

El caso contrario al anterior, de www.dominio.com a dominio.com:

RewriteCond %{HTTP_HOST} ^www.midominio.com$
RewriteRule (.*) http://midominio.com/$1 [R=301,L]

Si tenemos HTTPS podemos poner también así:

RewriteCond %{HTTP_HOST} ^www.midominio.com$
RewriteRule (.*) https://midominio.com/$1 [R=301,L]

Redireccionar de HTTP a HTTPS y de HTTPS a HTTP

Para redireccionar de http://midominio.com a https://midominio.com y al revés estos son los códigos:

De HTTP a HTTPS:

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

De HTTPS a HTTP:

RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Redireccionar una URL a otra URL

En ocasiones queremos redireccionar de URL a otra, por ejemplo, de midominio.com/miweb a midominio.com/minuevaweb. Para ello deberemos de hacer lo siguiente:

Redirect 301 /category/mi-post /category/mi-nuevo-post

Se deben de poner únicamente la URL sin el protocolo (HTTP o HTTPS) y sin el dominio (midominio.com) simplemente lo que hay después del /.

Redireccionar de un dominio a otro dominio

Para redireccionar de midominio.com a nuevodominio.com, debéis de poner lo siguiente:

RewriteRule ^(.*)$ http://nuevodominio.com/$1 [R=301,L]

Y para HTTPS:

RewriteRule ^(.*)$ https://nuevodominio.com/$1 [R=301,L]

Redireccionar de una URL hija a una URL padre

Para redireccionar de midominio.com/category/index.html a midominio.com/category/ debéis de poner esto:

Redirect 301 /category/index.html /category

Redireccionar de barra a sin barra y de sin barra a barra

Otra redirección común es la de midominio.com/category/ a midominio.com/category y viceversa, pues aquí la tenéis:

De barra a sin barra:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

De sin barra a barra:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

Redireccionar a una página de error 404 (Contenido no disponible)

Una cosa que también podemos configurar, es que cuando no encuentre una pagina podamos redirigir a una pagina de error 404:

ErrorDocument 404 https://midominio.com/404error.html

En este caso, tenemos que poner la URL completa de nuestro sitio.

Ningún comentario “Guía definitiva sobre las redirecciones 301 en htaccess”

avatar
500
  Suscribirte  
Notificarme

Utilizamos cookies propias y de terceros para mejorar nuestros servicios. Si continúa navegando, consideramos que acepta su uso. Doble clic sobre aquí para cerrar.