在我的网站上,我很想将说意大利语(他们的语言浏览器是意大利语)的访问者重定向到 /it/ 并将所有其他语言重定向到 /en/
我想出了以下代码:
#redirect to /it for italian lang
RewriteCond %{HTTP_HOST} ^domain\.net$ [NC]
RewriteCond %{REQUEST_URI} !/it/ [NC] #doesn't have /it in the url already
RewriteCond %{REQUEST_URI} !/en/ [NC] #doesn't have /en in the url already
RewriteCond %{REQUEST_URI} !/admin/ [NC] #we are not in the admin panel
RewriteCond %{HTTP:Accept-Language} ^it [NC] #browser language is italian
RewriteRule ^(.*)$ http://domain.net/it/$1 [L,R=301]
#redirect to /en for all other langs
RewriteCond %{HTTP_HOST} ^domain\.net$ [NC]
RewriteCond %{REQUEST_URI} !/it/ [NC] #doesn't have /it in the url already
RewriteCond %{REQUEST_URI} !/en/ [NC] #doesn't have /en in the url already
RewriteCond %{REQUEST_URI} !/admin/ [NC] #we are not in the admin panel
RewriteRule ^(.*)$ http://domain.net/en/$1 [L,R=301]
这样所有条件都被检查,如果语言是意大利语,他们会重定向到 /it 否则第二个块进入行动,他们会被重定向到英文版本。
我的第一个问题是:有更有效的方法吗?我的 htaccess 功能非常有限。
作为一个额外的问题:这会给搜索引擎优化带来问题吗?我猜所有爬取 domain.net 的机器人都会被重定向到英文版,然后找到意大利版的链接(这是一个标志图像)并爬取意大利版。这是对的吗?