Wordpress浏览器语言重定向 - 重定向错误太多

时间:2017-09-01 16:17:34

标签: wordpress .htaccess redirect mod-rewrite

我正在尝试在我的Wordpress网站上基于浏览器语言实现重定向,在.htaccess上添加此代码

RewriteEngine On
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ https://www.example.com/ambienteTrabajo/?lang=es [L,R=301]

?lang=es是WPML插件如何标记我的翻译页面,但是我没有使用内置的WPML重定向,因为它给我一个令人不快的延迟:页面首先加载英文,然后几秒钟重定向到西班牙语。

使用我在url重定向完成之前添加的代码,但页面未显示;它会显示一个空白页面,其中包含 TOO MANY REDIRECTS消息

我应该如何设置此重定向规则?我尝试过很多事情但没有取得任何成功。

1 个答案:

答案 0 :(得分:0)

它可能会进入一个无限循环,因为每次页面加载它都会检测到语言es并执行重定向...这将读取.htaccess,再次检查语言,检测到它的es再次重定向等等。

您的重定向规则需要执行以下操作

  • 如果浏览器语言为es
  • 查询字符串尚未包含 lang=es
  • 然后才进行重定向

我不是Rewrite规则的专家,但请尝试以下内容:

RewriteEngine On
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteCond %{QUERY_STRING} !(^|&)lang=es [NC]
RewriteRule ^$ https://www.example.com/ambienteTrabajo/?lang=es [L,R=302]

注意:

删除现有的301重定向后,您需要清除浏览器缓存。

我已将其更改为302重定向 - 您应该首先使用临时302重定向测试您的规则,以确保其在之前使用使其成为永久性的301重定向,仅在如果出现问题!