Archivo htaccess

Uno de los problemas fundamentales que nos podemos encontrar en el SEO son los enlaces rotos, páginas 404, redireccionamientos múltiples, cambio no correcto a https, o cambio de dominio sin estrategia de redireccionamiento (migración de dominio).

En algunos de ellos hará falta tocar el código fuente del tema o de las páginas o post, como es en el caso de los enlaces rotos o dobles redireccionamientos. Pero en otros debemos hacerlo con redireccionamientos htaccess

¿Qué es el fichero .htaccess (hypertext Access)?

Es un fichero que se encuentra en la raíz del sitio web, o de cualquier directorio donde haya un index.php, donde le indicamos al servidor distintos comportamientos que debe tener para mostrar la información adecuada al cliente sobre ese mismo directorio o árbol de directorios.

Se trata de un archivo de configuración cuyo nombre será .htaccess y que contendrá los parámetros y directivas adecuados para ordenar al servidor comportamientos en su mismo directorio. Por ello no es uno de los ficheros más importantes de una web sobre un servidor Apache.

¿Para qué sirve el fichero htacces?

Lo podemos utilizar para un montón de situaciones, como por ejemplo:

  • Controlar el acceso al sitio web (por ip) o a carpetas determinadas
  • Evitar el Hotlinking,
  • Cambiar una página de inicio por defecto
  • Forzar el cacheo de nuestra web
  • Compresión Gzip
  • Informar del tiempo de cacheo.
  • Crear URL Amigables…

Pero lo que realmente nos atañe, y que es lo más importante, son los redireccionamientos. Por ello vamos a describirlos a continuación

Nos podemos encontrar distintas necesidades para utilizar redireccionamientos de forma masiva o de forma individual. Lo primero que debemos hacer es una copia del fichero, descargarlo por FTP. Siempre es importante llevar un control de versiones del mismo para no tener ningún problema.

A continuación describimos los siguiente problemas que nos podemos encontrar y por qué debemos hacer la redirección:

Redirección por cambio de dominio

Imaginamos que tenemos dominio1.com y hemos cambiado la web de nombre y lo ponemos como dominio2.com. Para ello necesitamos añadir la siguiente línea de código en el htaccess:

<IfModule mod_rewrite.c>

 RewriteEngine On

 RewriteCond %{HTTP_HOST} ^dominio1.com$ [OR]

 RewriteCond %{HTTP_HOST} ^www.dominio1.com$

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

</IfModule>

 

De esta forma una la url http://dominio1.com/post1 se redirigirá a https://dominio2.com/post1. Esto es importante dejarlo claro. El segundo dominio dominio2.com tiene certificado ssl y por tanto el redireccionamiento se hace de forma completa al dominio con https. Si no lo hacemos así incurriremos en múltiples redireccionamientos que a la postre son perjudiciales para el SEO.

 

Redirigir dominio sin www a dominio con www. (cambio de sin www a www)

En este caso veremos cómo el dominio https://dominio1.com a https://www.dominio1.com hay que poner el siguiente código:

<IfModule mod_rewrite.c>

RewriteCond %{HTTP_HOST} ^dominio1.com [NC]

RewriteRule (.*) http://www.dominio1.com/$1 [R=301,L,QSA]

</IfModule>

 

En el caso que nuestro dominio ya sea en https pondremos la penúltima línea con https en lugar de http quedando el código de la siguiente forma:

<IfModule mod_rewrite.c>

RewriteCond %{HTTP_HOST} ^dominio1.com [NC]

RewriteRule (.*) https://www.dominio1.com/$1 [R=301,L,QSA]

</IfModule>

 

Redirigir dominio con www a dominio sin www. (Cambio de www a sinwww)

El ejemplo que vamos a poner es el del redireccionamiento del dominio https://www.dominio1.com a https://dominio1.com y que hay que poner el siguiente código:

<IfModule mod_rewrite.c>

RewriteCond %{HTTP_HOST} ^www.dominio1.com [NC]

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

</IfModule>

 

Como sucede con el caso anterior, si el dominio tiene https, debemos implementarlo directamente cambiando el http por un https en la penúltima línea, por lo que el código quedaría de la siguiente forma:

<IfModule mod_rewrite.c>

RewriteCond %{HTTP_HOST} ^www.dominio1.com [NC]

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

</IfModule>

 

Redireccionamiento de dominios sin https a dominios con https.

Esto es necesario cuando se instala un certificado de seguridad SSL. Y es necesario realizarlo porque todos los enlaces internos absolutos y enlaces externos apuntarán sobre la web en http, y si no realizamos la redirección tendremos 2 versiones del dominio.

Este es el código que hay que insertar:

<IfModule mod_rewrite.c>

RewriteCond %{HTTPS} off

RewriteRule (.*) https://www.ejemplo.com/$1 [R=301,L,QSA]

</IfModule>

 

Redirigir una página cualquiera a la url principal

En algunos casos nos encontramos con que el propio CMS ha creado dominio1.com/index.php o dominio1.com/home o dominio1.com/tienda siendo estas iguales que la página principal. Obviamente esto es un problema para el SEO de la web, ya que generaría una cantidad infumable de contenido duplicado. Por ello se debe hacer de la siguiente forma.

Redirect 301 /index.php https://dominio1.com

Esto redireccionaría la página creada llamada index.php a la propia home. Debemos probarlo y cerciorarnos que se hay generado un bucle por lo que la web quedaría out.

Redirigir errores 404 o 500 a otras páginas del sitio

Aquí debemos de sentarnos un minuto a pensar y a analizar. Primero por qué se están sucediendo los errores 404. Estos son páginas que existían y que ya no existen, pero que reciben enlaces, ya sea internos o externos de algún sitio. Lo primero es crear una tabla donde pongamos en un lado las páginas con errores y en el otro las páginas a las que queremos redireccionar esos errores, ya se porque tienen un contenido similar o que es la versión de la nueva página y se ha cambiado la url. Antes de realizar cualquier redireccionamiento debemos cambiar todos los enlaces internos que tengan estas páginas o url antiguas a las urls correctas. Y si podemos también cambiar los externos.

Una vez tengamos todo deberemos hacerlo uno a uno de la siguiente forma: una línea por redireccionamiento o error de la siguiente forma:

Redirect 301 (url del error sin la raíz) (url absoluta de la nueva). Por ejemplo

Si queremos redireccionar https://dominio1.com/post1-viajes-gulliver/ a https://dominio1.com/post1-viajes-de-gulliver-el-grande/ el código sería el siguiente:

Redirect 301 /post1-viajes-gulliver/ https://dominio1.com/post-viajes-de-gulliver-el-grande/

De esta forma estaremos indicando que la dirección url primera ha cambiado su dirección de forma permanente a la url2.

 

¿Qué precauciones debemos tener?

Cuando realizamos redirect masivos habitualmente cometemos errores por eso aconsejamos leer los siguientes puntos que indican las precauciones que debemos tener para no cometer errores:

  • Copia de seguridad del fichero .htaccess
  • Comprobar después de poner un código que no hay un doble redireccionamiento. (para ello hay una extensión de Chrome que podemos instalar: Redirect Path con el que podremos ver todas las redirecciones que se hacen cuando entramos a una web.
  • Comprobar los redirect con Screaming Frog, donde podemos ver también los bucles de redireccionamiento y los redirect múltiples.
  • Si tienes redireccionamientos anteriores y cambias a https, cambia hay que cambiarlos, para que no se haga doble redireccionamiento.
  • Recordemos que en los dobles redireccionamientos se pierde fuerza de los enlaces recibidos, y el Linkjuice se diluye.
  • Tener claro que se realiza un redireccionamiento 301 y no un redirección 302

 

A grandes rasgos es lo que necesitamos para que nos funcione todo de forma correcta al hacer cualquier cambio o migración en nuestra web.

 

Puntúa este artículo
[Total: 1 Average: 5]
0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*