繁体   English   中英

.htaccess中的子域和路径的RewriteCond问题

[英]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或www.mydomain.cat ---> ca .mydomain.com --->显示加泰罗尼亚语的网站
  • mydomain.es或www.mydomain.es ---> es .mydomain.com --->以西班牙语显示网站
  • mydomain.com或www.mydomain.com ---> en .mydomain.com --->以英文显示网站

现在我遇到的麻烦是,例如,用户键入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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM