我有一个多语言网站,可以在不同的领域中使用该语言。所有域共享相同的字体代码,网站(Drupal)使用路径确定语言。 现在我已经将每个域配置为重定向到自己的语言,所以我得到了:
这样,当用户进入网站时,cms会将语言切换到与该域对应的语言。
我的问题是当有人使用网站上的语言切换器时,它会更改所有查询参数以显示与该语言相对应的内容但不会更改域名,如果我是在www.example.com/en/something
并切换到西班牙语,我将以www.example.com/es/algo
结尾。
我还需要de domain根据语言进行更改(在域名后面总是写成/en
,/es
,/ru
),如果可能的话,保留查询参数。
我已经在htaccess中编写了这段代码(仅限俄语,作为测试),但我担心它可能完全错误,因为它什么都不做:
RewriteCond %{REQUEST_URI} ^/ru$1
RewriteRule ^$1 http://www.example.ru/ru$1 [L,R=301]
任何建议都会非常有用。
答案 0 :(得分:2)
在您之前的规则之前加上这些:
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^en/(.*)$ http://www.example.com%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.example\.ru$
RewriteRule ^ru/(.*)$ http://www.example.ru%{REQUEST_URI} [L,R=301]
...
请注意,如果用户输入www.example.ru/en/something
,路径中的/en
将比主机名中的.ru
更重要,从而导致重定向到www.example.com/en/something
}
答案 1 :(得分:0)
mod_rewrite
使用正则表达式。 $1
引用需要在匹配部分中“定义”的组(使用括号,.
为“匹配所有”运算符):
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ru(.*)$ http://www.example.ru/$1 [L,R=301]