¿Cómo hacer una web multilenguaje sin afectar al posicionamiento (SEO) con PHP?


Leyendo este artículo sobre Posicionamiento web en sitios Multi-idioma, vemos que hay múltiple maneras de resolver éste problema, aunque cada una tiene ciertos inconvenientes.

Una de las múltiples opciones y de las más fáciles es hacerlo pasando parámetros mediante GET y jugando con la sesión y las cookies del usuario. En nuestro caso, hemos elegido esta opción, pero no deseamos que la URL quede mancillada con parámetros, pero que al mismo tiempo, tampoco nos de un error si no le pasamos dichos parámetros a la URL. ¿Qué hacemos entonces?

Pues primeramente para elegir el idioma de la web a mostrar, evaluamos que si hay un GET es porque el usuario ha cambiado el idioma de la página, si no, rastrearemos la sesión y las cookies en busca de un idioma. En el caso de no encontrar nada, buscaremos el idioma del navegador, y en caso de que falle, pondremos un idioma internacional como es el inglés. Veamos el código:

Es decir, que sólo pasaremos parámetros por GET en el caso que el usuario cambie el idioma. Y si un usuario pasa un enlace a otro sin dichos parámetros, éste último pueda ver el contenido sin problema en el que podemos asegurar será su idioma (al menos, el del navegador).

Con ésto evitamos el problema de duplicar contenido teniendo URL diferentes para cada idioma, por ejemplo. Podemos evaluar el valor de la variable $lang y mostrar el contenido en el idioma que deseemos usando includes.