Las reglas de .htaccess para conseguir un nombre de dominio único

El problema

Supongamos que tenemos un sitio web: www.ejemplo.es. Los usuarios pueden acceder a este a través de dos URLs: www.ejemplo.es y también ejemplo.es. ¿Qué problema genera esto en el ámbito del SEO? El problema es que, para los buscadores, es una duplicación de contenidos. Los usuarios acceden a la misma página, al mismo contenido, por dos URLs diferentes. Aunque a nosotros nos parezca que da lo mismo, para los buscadores no es así. Nuestro dominio interpreta las dos llamadas como si se tratara de páginas diferentes. Esto es motivo de penalización por los buscadores y el posicionamiento SEO de nuestra página sufrirá las consecuencias.

Tenemos que tener en cuenta que este factor es importante y que para solucionarlo hay que tener una URL única de acceso a nuestra página web. ¿Cúal es la mejor www.ejemplo.esejemplo.es? Los especialistas SEO dicen que hay que utilizar una de ellas: www.ejemplo.es o ejemplo.es (no las dos) como puerta de acceso a nuestra web. Lo importante es redirigir una URL a la otra y así ayudar a la optimización SEO para buscadores.

Hay que editar nuestro fichero .htaccess siguiendo unas reglas y así hacer un redireccionamiento 301 de ejemplo.es a www.ejemplo.es o viceversa.

La solución

1. Redirigir ejemplo.es a www.ejemplo.es:

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

RewriteCond  nos muestra: "Si el host solicitado NO es www.ejemplo.es..."

RewriteRule nos muestra: "...redirige la solicitud a www.ejemplo.es..."

De esta manera los usuarios entrarán a nuestra página web a través de una URL única.

2. Si queremos redirigir www.ejemplo.es a ejemplo.es:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^ejemplo\.es$ [NC]
RewriteRule (.*) http://ejemplo.es/$1 [R=301, L]

Notas:

  • [NC]
    - Significa "no case sensitive": no hay una preferencia para mayúsculas o minúsculas. RewriteRule, por defecto, es "case sensitive".
  • !
    - Frente a una expresión regular significa NO. Esta regla se cumple sólo si la cadena de texto NO coincide con el patrón indicado en la expresión regular.
  • ^
    - Marca con qué patrón tiene que empezar la cadena de texto.
  • .
    - En una expresión regular significa cualquier carácter. Por eso, en RewriteCond hay que utilizar "\." para indicar que se trata del carácter "." y no de cualquier carácter.  Si utilizamos "\"  delante de un carácter, le deja sin significado especial (se escapa).
  • $
    - Marca con qué patrón tiene que finalizar la cadena de texto.
  • (.*)
    - Significa cualquier carácter cero o más veces. Esta cadena se guardará en la variable $1.
  • $1
    - Es la variable que contiene (.*)

Esperamos que este pequeño artículo os sirva de ayuda para mejorar el posicionamiento web de vuestras páginas y os hayamos aportado algo de claridad respecto de las URLs canónicas.

Aprende a bloquear el spam con el archivo htacces, en nuestro post te lo explicamos todos.

Autor: Alexandru Costache