Redirigir url por idioma en htaccess

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.

9 comentarios en “Redirigir url por idioma en htaccess

    1. 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.

  1. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *