Inicio > apache > Redirección transparente a otro dominio por idioma con Apache

Redirección transparente a otro dominio por idioma con Apache

Jueves, 11 de febrero de 2010 Rafa García Dejar un comentario Ir a comentarios

Hoy he necesitado hacer una redirección transparente (que el usuario no se entere de que lo estoy llevando a otro lado) según el idioma aceptado del navegador.


Para entendernos, si el usuario iba a http://bar.com con su navegado en inglés debía redireccionarlo a http://en.foo.com pero sin cambiar la dirección del navegador.

Lo primero que probé fue el típico:

  RewriteCond %{HTTP:Accept-Language} ^en
  RewriteRule ^/$ http://en.foo.com [L]

  RewriteCond %{HTTP:Accept-Language} ^pt-BR
  RewriteRule ^/$ http://br.foo.com [L]

  RewriteCond %{HTTP:Accept-Language} ^pt
  RewriteRule ^/$ http://pt.foo.com [L]

  ...

  #Default Language
  RewriteRule ^/$ http://foo.com [L]

Esto hacía la redirección pero al ser a otro dominio la hacía como si le pasáramos el flag R (vamos que hacía: [R,L]). Mas info sobre esto aquí.


La solución vino del módulo mod_proxy, y lo que he hecho ha sido usar el parámetro P (force proxy). La cosa ha quedado así:

RewriteCond %{HTTP:Accept-Language} ^en
  RewriteRule ^/$ http://en.foo.com/ [P,L]

  RewriteCond %{HTTP:Accept-Language} ^pt-BR
  RewriteRule ^/$ http://br.foo.com [P,L]

  RewriteCond %{HTTP:Accept-Language} ^pt
  RewriteRule ^/$ http://pt.foo.com [P,L]

  ...

  #Default language
  RewriteRule ^/$ http://foo.com [P,L]


That’s all folks!

Categories: apache Tags:
  1. Sin comentarios aún.
  1. Sin trackbacks aún.