我正在尝试将我博客的访问者重定向到法语或英语版本。 所以我做了这个.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#---------------------
# Language Redirection
#---------------------
# Checking if the redirection didn't occur yet
# Checking that the url doesn't begin with /en
RewriteCond %{REQUEST_URI} !^/en(.*)$
# Checking if the user is in english
RewriteCond %{HTTP:Accept-Language} ^en [NC]
# Redirecting from /the/url to /en/the/url
RewriteRule ^(.*)$ /en/$1 [L,R=301]
#----------------------
# Wordpress Redirection
#----------------------
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
基本上,我想将来自谷歌的访客从/ my / article重定向到/ en / my / article,如果他们是英语的话。 相反,有一个无限循环!我认为REQUEST_URI始终是index.php,因为最后一个RewriteRule。
有没有人这样做过?
非常感谢
答案 0 :(得分:1)
Accept-Language不仅仅是一个同等值列表;它是一个加权值列表,其中每个值可以具有一个质量值,该值用0到1之间的值指定首选项。这意味着仅仅因为一个特定值的出现并不意味着该值是最优选的值。事实上,质量值为0意味着“根本不可接受”。
因此,不仅要查看是否存在特定子字符串,而应该解析加权值列表,并找出首选值与可用值之间的最佳匹配。
但mod_rewrite不适合这项工作。你应该更好地使用更强大的语言,比如PHP。