Si tienes un sitio web en Apache y necesitas redirigir a una dirección url distinta por cada idioma (inglés, español, portugués…) puede ser muy útil hacerlo mediante htaccess con la cabecera HTTP:Accept-Language que transmite el navegador del cliente. De este modo «confiaremos» en la configuración de lenguaje que cada usuario tiene en su navegador.
Así que nos ponemos manos a la obra:
Crear estructura de directorios
Deberemos crear un directorio por cada uno de los idiomas.
Por ejemplo si nuestro dominio es midominio.com crearemos en la raíz tantas subcarpetas como idiomas queramos manejar:
midominio.com/pt
midominio.com/es
midominio.com/en
…
Editar el archivo .htaccess
Añadiremos estas líneas:
RewriteEngine On RewriteBase / # Lenguaje portugués: 'pt' RewriteCond %{HTTP:Accept-Language} ^pt [NC] RewriteRule ^/?$ pt/ [R,NC,L] # Lenguaje portugués: 'es' RewriteCond %{HTTP:Accept-Language} ^es [NC] RewriteRule ^/?$ es/ [R,NC,L] #Regla general para los demás casos RewriteRule ^/?$ en/ [R,NC,L]
En el código podemos comprobar que se establecen diversas reglas de redireccionamiento para cada condición de la cabecera enviada por el navegador.
Me ha venido genial para mi página.
Gracias!!
Me alegro mucho, ¡gracias a ti por tu comentario!
Lo probare y te aviso si me funciona o no
Espero que te funcione. Gracias por tu mensaje.
al agregar el htaccess los robobts de google no logran escanear mi pagina
como lo puedo soluciones
Hola nimrod, gracias por tu comentario.
En respuesta a tu pregunta lo que haría yo sería un sitemap.xml donde se especifiquen todas las urls de los distintos idiomas y enviarlo mediante google webmaster tools.
Espero te sirva mi respuesta.
Hola Javier
He probado el código en el htacces y funciona pero en la versión en ingles que no tiene carpeta de idioma sino que esta en el dominio principal se rompe al poner el código.
A que podría deberse?
Gracias de antemano
Hola, muchas gracias por tu comentario.
Algunas veces la configuración del equipo tiene ciertas limitaciones.
Puede que vaya por ahí el problema.