entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

redireccionar según idioma del navegador con .htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.mipagina.com$ [NC]
RewriteRule ^(.*)$ http://www.mipagina.com/$1 [L,R=301]

RewriteCond %{HTTP:Accept-Language} (en) [NC]
RewriteRule .* http://www.mipagina.com/en/ [R,L]

ErrorDocument 404 http://www.mipagina.com/404.html

RewriteBase /

Este es mi archivo .htaccess, quiero hacer que si el navegador del usuario está en español, acceda a www.mipagina.com si no, www.mipagina.com/en

Estoy haciendolo de la forma que he puesto ahí, y en la carpeta /en tengo otro archivo .htaccess que tiene lo siguiente:

RewriteEngine off

Con eso estoy teniendo algun error que si estoy en un navegador en español me sigue abriendo www.mipagina.com/en y no me abre la normal.

¿A qué es debido?

4 Respuestas

0voto

Peter Puntos144300

Acabo de probar esta en uno de mis sitios y te debe de funcionar.

<IfModule mod_rewrite.c>
# Activa el rewrite engine
RewriteEngine On 
RewriteBase /

# Si el idioma es 'es',
# redirecciona a es/
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^/?$ es/ [R,NC,L]

# Si no, redirecciona a en/
RewriteRule ^/?$ en/ [R,NC,L]
</IfModule>

Saludos.

0voto

white Puntos75820

intenta dandole un codigo 301, asi:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ /en [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ /es [L,R=301]

0voto

danielreales7 comentado

Que va sigue sin funcionar, en mi caso no tengo el directorio español en /es sino en la raíz del sitio, solo tengo los archivos de inglés en /en

1voto

white Puntos75820

entonces solo haz el redireccionamiento para los idiomas en sub directorios:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ /en [L,R=301]

tambien puedes usar cookies para guardar el idioma y usarlo despues con tu pagina.

PD: recuerda ver si tu navegador tiene como lenguaje predeterminado español (es)
Ej:
firefox > preferencias > contenido > idiomas
tambien borra el cache del navegador para testear.

0voto

danielreales7 comentado

No me funciona tampoco con esto, me es muy extraño ya -.-

0voto

Peter Puntos144300

Te pongo dos opciones a ver si te sirve alguna.

Opción 1.

# Español
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteCond %{HTTP_HOST} !^(www\.)?dominio\.es$ [NC]
RewriteRule ^$ http://www.dominio.es/ [R,L,NC]

# Ingles
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteCond %{HTTP_HOST} !^(www\.)?dominio\.en$ [NC]
RewriteRule ^$ http://www.dominio.en/ [R,L,NC]

# Todos los demás
RewriteCond %{HTTP_HOST} !^(www\.)?dominio\.com$ [NC]
RewriteRule ^$ http://www.dominio.com/ [R,L]

Opción 2.

Options -Indexes +FollowSymLinks 
RewriteEngine On
RewriteRule ^(en|es)/ - [L,NC]

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^(.*)$ /es/$1 [L] 

RewriteRule ^(.*)$ /en/$1 [L]

Saludos.

0voto

danielreales7 comentado

Peter, no me ha funcionado tampoco con ninguna, lo he estado modificando un poco para mis datos, pero nada.
Tengo todo el español en el raíz, y aparte en otra carpeta /en es donde está el inglés.

Quiero decir que no tengo una carpeta también llamada /es

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta