[英]RewriteCond issue with subdomains and paths in .htaccess
根据语言(由qTranslate插件管理),我有三个不同的域指向同一WordPress的主机实例:
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规则,以在URL的末尾“添加”其他内容(不知道使用QUERY_STRING或使用参数是否更好),但是存在,但是我无法获取工作正常,但我不知道这是否是实现此目标的最佳方法。
任何人都可以帮助我或提供提示吗?
好的,我可以正常工作了:
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]
防止尾随斜杠。 我希望这对某人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.