Redirigir domino sin WWW con htaccess

En este tutorial voy a explicar cómo redireccionar el dominio sin www a la versión con www utilizando expresiones regulares y htaccess.

Redireccionamiento web Fichero htaccess configuración de servidor

Hay un problema habitual que surge cuando adquirimos nuestros dominios: el contenido duplicado es fácil que aparezca y es un problema si queremos posicionarnos adecuadamente en Google y CIA.

Este problema se debe a que cuando asignamos el dominio a nuestros servidores y carpetas con sus adecuadas DNS obtenemos dos enlaces para el mismo contenido: un enlace con www y otro sin www.

¿Qué es el contenido duplicado?

El contenido duplicado es el problema que ocurre cuando dos páginas web, o mejor dicho, dos enlaces, tienen el mismo contenido o al menos comparten una gran similitud (este parecido lo deciden los motores de búsqueda).

Es un problema grave que los motores de búsqueda intentan solventar invalidando el contenido que es marcado como duplicado, lo que quiere decir que esa página jamás se posicionará. 

Pero yo no copio contenido ¿Como me puede afectar?

Aunque a priori cualquier dueño honrado de una web  puede creer que es imposible que el contenido duplicado le afecte, hay un caso muy común que siempre se cumple: tu dominio con www. y el que no lo tiene.

Si cuando adquiriste y configuraste tu dominio no desactivaste uno de los dos posibles dominios, debes saber que muy probablemente tengas un problema de contenido duplicado que debe estar perjudicando el posicionamiento de tu web.

 ¿Cómo elimino el dominio sin www?

Para eliminar uno de los dominios que hemos hablado deberemos utilizar el concepto de la redirección. En el caso de este tutorial voy a redirigir el dominio sin www al que si lo tiene.

Redirigir o redireccionar un enlace a otro es la acción de llevar las visitas a una página de nuestra web (o todo el dominio) a otra página o enlace.

Para redireccionar estas visitas y evitar el contenido duplicado, vamos a utilizar el archivo de configuración .htaccess, fichero que nos permite aplicar reglas programadas que se ejecutarán antes de cualquier otro script de nuestras webs.

El archivo .htaccess (hypertext access) es un archivo de configuración de servidores Apache que permite a los webmasters aplicar restricciones de acceso a directorios o archivos, redirección de páginas, denegación de accesos por ip, etc. Todo esto con la idea de mejorar la seguridad de la web o mejorar la distribución de su contenido.

Programaremos en este fichero .htaccess con su lenguaje propio, ayudándonos de expresiones regulares para lograr una redirección 301.

Redirección con fichero .htaccess

El código que tratará el problema y lanzará la redirección o reescritura de la url es sencillo y consta de las siguientes cinco líneas:

 

#ifModule mod_rewrite.c
RewriteEngine On
#para redirigir a www
RewriteCond %{HTTP_HOST} ^srcodigofuente.es [NC]
RewriteRule ^(.*)$ http://www.srcodigofuente.es/$1 [L,R=301,NC]
#/ifModule

¿No entiendes nada? Tranquil@, vamos a ver línea a línea el código escrito.

  1. La primera línea es un condicional, sí, como un if del .htaccess, este if está condicionando la ejecución de toda la redirección, que solo se comprobará si el módulo mod_rewrite está activado en el servidor Apache.
  2. En el caso de que el módulo mod_rewrite de Apache esté activado, se leerá la siguiente línea: RewriteEngine On. Este comando activa la reescritura de la dirección web visitada en el contexto actual. Esto quiere decir que permitirá que nuestro siguiente código de redirección se pueda lanzar.
  3. RewriteCond es un condicional específico del módulo mod_rewrite. Este condicional nos permite indicar una condición mediante expresiones regulares (RegExp) que establecerán bajo qué circunstancias será lanzada la próxima regla de reescritura RewriteRule. Puede que te suene la expresión regular %{HTTP_HOST} indiciada en la condición, es normal, ya que esta variable especial del fichero .htaccess se refiere al igual que en php la variable $_SERVER['HTTP_HOST'] al dominio de la url en cuestión. El código:  %{HTTP_HOST} ^srcodigofuente.es exactamente lo que dice es que si la variable HTTP_HOST empieza (^) por srcodigofuente.es la condición será correcta y se evaluará a verdadero.
    Por último, al final de la línea podrás ver [NC], esto es un flag, en concreto el flag NOCASE, una variable especial que indica que nos da igual si son mayúsculas que minúsculas. Da igual que escriban SRcodigoFuente.ES, o srcodigofuente. Es, las dos posibilidades se evaluarán como srcodigofuente.es.
  4. RewriteRule es la regla de reescritura que se ejecutará si la anterior RewriteCond se evalúa a verdadero. Utiliza una vez más expresiones regulares para indicar la redirección a la url http://www.srcodigofuente.es/$1. Donde $1 es cualquier información que podría aparecer en la url de la web después del dominio ^(.*)$. Un ejemplo de $1 sería el slug tutoriales en (http://srcodigofuente.es/tutoriales). A continuación, una vez más, he indicado tres flags de configuración:
    1. L, que indica que esta regla será la última en ejecutarse, es decir, cualquier otra regla que incluyas tras está línea ya no se comprobará.
    2. R=301, redirección de tipo 301, que indica el tipo de reescritura que tiene que llevar a cabo el módulo mod_rewrite. Existen otros tipos, y reescritura no conlleva redirección, que es reenviar la petición del cliente a otra url.
    3. Por último una vez más NC para ignorar posibles mayúsculas y minúsculas en la url.

Todo este código debes incluirlo en un fichero con nombre .htaccess e incluirlo en la carpeta raíz de tu proyecto.

Extra: Comprobar el módulo mod_rewrite

Aunque en prácticamente todos los servicios de hosting que contratemos, el módulo mod_rewrite vendrá activado, no suele así en las instalaciones locales. Para asegurar que el código de redirección anterior funciona y no nos deja nuestra web bloqueada y con el culo al aire, vamos a mirar si tenemos activado el módulo mod_rewrite, y en caso de no ser así activarlo. Esta configuración de Apache será aplicable tanto a instalaciones de XAMPP como de WAMPP.

Debemos a ir a nuestro directorio de instalación de Apache: en XAMPP c:/xampp/apache/conf/ y abrir con el editor de textos preferido (yo recomiendo notepad++) el fichero httpd.conf.

En Wamp encontraremos el fichero httpd.conf en: c:/wamp/bin/apache/apacheX.X.X/conf.

Buscamos la línea donde indique mod_rewrite (en notepad++ con ctrl+f o cmd+f en Mac) y si nos encontramos la línea con una almohadilla en el primer carácter es que está desactivado, quitamos la # para descomentar la línea, guardamos y reiniciamos el servidor.

La línea en concreto quedará así: LoadModule rewrite_module modules/mod_rewrite.so.

Por último te dejo un video para que veas gráficamente como activarlo!

¡Enhorabuena! Todo debería ir como la seda, ya puedes probar a en tu url y probar el funcionamiento de la redirección 301 del .htaccess. Verás cómo te redidirige a la url correcta.

Sobre el autor

Javier Gómez Redactor en Srcodigofuente.es

Javier Gómez

Ingeniero técnico en informática de gestión. Desarrollador web freelance y profesor de desarrollo web a partes iguales. Testarudo autodidacta, creativo, perfeccionista y alma libre.

Cargando comentarios

Utilizamos "cookies" para información estadística. Si continúas navegando aceptas su uso.