> Manuales > Taller de PHP

Cómo canonizar los nombres de dominios, para obligar que siempre se visite un sitio con las 3w www…, haciendo redirección con PHP.

Recientemente se ha dado a conocer que motores de búsqueda como Google penalizan sitios web con contenido duplicado. Esto lo hemos hablado ya en el manual de Posicionamiento en buscadores, en el artículo Sitios con contenido duplicado pueden ser penalizados en Google.

En ese artículo comentamos varios consejos para no ser penalizados por tener contenido duplicado en nuestro sitio.

Uno de los consejos es que nuestro sitio no se pueda acceder a través de URLs distintas, con o sin las 3 w. Por ejemplo:

http://www.misitiodeejemplo.com
http://misitiodeejemplo.com

Si ambas direcciones tienen el mismo contenido, Google puede pensar que estás duplicando información en tu dominio y puede caer la clasificación en buscadores de tu sitio web.

Entonces hemos creado un código en PHP que presentamos en este artículo para canonizar las direcciones URL de tu dominio (elegir cuál preferimos que sea utilizada e indexada en Google, la URL con las 3w o sin ellas), creando un dominio principal y redirigiendo las URLs de los dominios secundarios al principal. En este caso hemos preferido que el dominio principal sea el que tiene las 3w y que el acceso al dominio sin las www se redirija al dominio con ellas.

En realidad el código es muy simple. Sólo hay que conocer unas cuantas variables del array de variables superglobales $_SERVER, que contienen información sobre el servidor, la URL a la que se está accediendo, el dominio, etc.

Referencia: Para saber más de las variables de $_SERVER en PHP podemos acceder a estas informaciones: Veamos el código PHP comentado de este taller:

//trozo de código para que siempre se visite el dominio con las 3w
if (substr($_SERVER["SERVER_NAME"],0,4) != "www."){
   //si el dominio al que intentamos acceder está sin las 3w
   //lo redirijo al dominio con las 3w
   header("HTTP/1.1 301 Moved Permanently");
   header("Location: http://www." . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]);
}


En nuestro código hacemos lo siguiente: Detectamos en el nombre del servidor al que se accede, osea, el nombre del dominio de la URL que estamos accediendo. Si no comienza por "www." es que no se está accediendo al dominio como queremos, es decir, con las 3 w.

En ese caso, simplemente hacemos una redirección 301 (movido permanentemente) a la dirección con las www. Para saber el servidor al que estamos accediendo utilizamos la variable $_SERVER["SERVER_NAME"] y para saber la página concreta a la que tenemos que dirigir dentro del dominio utilizamos la variable $_SERVER["REQUEST_URI"]).

Este script PHP sirve para cualquier dominio donde lo pongamos y cualquier página de ese dominio, pues está parametrizado a través de $_SERVER tanto el nombre del dominio como el nombre de la página a la que redirigir al navegador.

Con esto conseguiremos no tener duplicado el contenido de la web en dos dominios distintos, con y sin las www, con lo que nuestro sitio web PHP estará un poco más optimizado para buscadores.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual