2017-09-01 152 views
2

我想基于浏览器的语言来实现我的WordPress网站重定向,通过在的.htaccessWordPress的浏览器语言重定向 - 太多的重定向错误

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

?lang=es添加该代码是如何WPML插件标签我翻译的页面,但我没有使用内置的WPML重定向,因为它给了我一个不愉快的延迟:页面第一次加载英文,然后几秒钟后重定向到西班牙语。

使用在URL重定向完成之前添加的代码,但未显示页面;它显示一个空白页面,其中有一个太多重定向消息

我应该如何设置此重定向规则?我尝试了很多没有成功的事情。

回答

0

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

您重定向规则需要做以下

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

我不是重写规则的专家,但你可以试试下面的:

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重定向,以防万一出了差错!