首先,我有几个域指向同一个网页,每个域对应于不同的语言。 网页(Drupal)使用URL( example.com/en
)中的/lang
参数标识语言。 我需要将每个域redirect到相应的语言,所以我需要这样的东西:
我在htaccess中定义了一些规则,但他们没有做我所期望的:
# Rewrite --- http://www.example.com => http://www.example.com/en RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] RewriteRule ^$ /en? [L,R=301] # Rewrite --- http://www.example.ru => http://www.example.ru/ru RewriteCond %{HTTP_HOST} !^www\.example\.ru [NC] RewriteRule ^$ /ru? [L,R=301]
而不是改变example.com
到example.com/en
和example.ru
到example.ru/ru
它附加/en
到所有域。 这是我失踪的东西吗?
任何build议将是非常有益的。
这应该工作:
# Rewrite --- http://www.example.com => http://www.example.com/en RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] RewriteCond %{REQUEST_URI} !^/en(/(.*)$|$) RewriteRule ^ /en%{REQUEST_URI} [L,R=301] # Rewrite --- http://www.example.ru => http://www.example.ru/ru RewriteCond %{HTTP_HOST} ^www\.example\.ru [NC] RewriteCond %{REQUEST_URI} !^/ru(/(.*)$|$) RewriteRule ^ /ru%{REQUEST_URI} [L,R=301]
如果您想让重写对用户不可见,您可以删除,R=301
。
你可以使用这些规则:
RewriteEngine on # example.com to example.com/en RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ RewriteRule ^((?!en).*)$ /en/$1 [L,R] # example.ru|fr to example.com/ru|fr RewriteCond %{HTTP_HOST} ^(?:www\.)?.+\.(ru|fr)$ RewriteRule ^((?!ru|fr).*)$ /%1/$1 [L,R]
只需在第一个RewriteCondition中将“example.com”替换为“youdomain.com”即可。