我有三个不同的域指向同一个WordPress的主机实例,具体取决于语言(使用qTranslate插件管理):
RewriteEngine On
Options +FollowSymLinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.cat$
RewriteRule ^/?$ "http\:\/\/ca\.mydomain\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$
RewriteRule ^/?$ "http\:\/\/en\.mydomain\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.es$
RewriteRule ^/?$ "http\:\/\/es\.mydomain\.com\/" [R=301,L]
有了这个,我设法实现了以下重定向:
现在我遇到的麻烦是,例如,用户输入mydomain.cat/work它不能正常工作,它会转到mydomain.com/work/并且缺少子域中的语言部分。如果在这种情况下重定向到ca.mydomain.com/work,那将是完美的。
我已经研究并试图修改三个RewriteCond规则,以便在网址的末尾添加额外的内容(不知道QUERY_STRING或参数是否更好),如果它存在,但我无法'让它工作正常,而我不知道这是否是实现它的最佳方式。
任何人都可以帮助我或给我一些线索吗?
答案 0 :(得分:0)
好的,我明白了:
RewriteEngine On
Options +FollowSymLinks
RewriteBase /
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.cat$
RewriteRule (.*) "http\:\/\/ca\.mydomain\.com\/$1" [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$
RewriteRule (.*) "http\:\/\/en\.mydomain\.com\/$1" [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.es$
RewriteRule (.*) "http\:\/\/es\.mydomain\.com\/$1" [R=301,L]
我在RewriteRule语句的末尾添加了$ 1,并在开头用(。*)覆盖了^ /?$。我还将这两行添加到其他行之上:
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
防止斜杠。我希望这对某人有帮助。