Canonizar las URL de un dominio con PHP, elegir utilizar o no las www.

  • Por
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.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

2creativo

16/1/2008
Quisiera saber como podemos realizar la redirección inversa, es decir, de una URL con las "www" a la otra sin las "3w's"

Gracias

Jose Luis

16/1/2008
Y en donde se configura este código?

paula

18/1/2008
Muy interesante, pero ¿dónde hay que poner exactamente este código? Y otra duda. Yo tengo un dominio principal con su alojamiento. Y luego tengo contratados otros dominios (sin alojamiento propio) que son palabras clave y que redirigen al principal. ¿Cómo y dónde les digo a esos dominios que hagan el redireccionamiento 301?

Muchas gracias

andres

22/1/2010
ayuda
tengo un problema use una pagina web utilizando php para insertar datos a una base de datos, pero utilizo el localhost en mi pc, y a la hora de suvir el archivo a internet a un dominio me marca error como le puedo hacer, que debo de cambiar, gracias

havock_20

15/6/2010
onde va el codigo
hola kisiera saber en que parte de la pagina web pondria ese codigo, gracias.
espero su respuesta