如何让mod_rewrite从子域重定向到查询字符串?

时间:2013-12-19 12:37:34

标签: regex apache .htaccess mod-rewrite redirect

我想将mod重写为以下示例:

从google.com.mydomain.com到mydomain.com/index.php?domain=google.com

我喜欢

RewriteCond %{HTTP_HOST} !^www [NC]
RewriteCond %{QUERY_STRING} !domain=
RewriteCond %{HTTP_HOST} ^([^\.]+)\.mydomain.com$ [NC]
RewriteRule ^(.*)$ /index.php?domain=%1 [L,QSA]

但此重定向google.mydomain.com为mydomain.com/index.php?domain=google

我希望规则重定向google.com而不是google

感谢

1 个答案:

答案 0 :(得分:3)

这是由于正确的正则表达式造成的。试试这个规则:

RewriteCond %{HTTP_HOST} !^www [NC]
RewriteCond %{QUERY_STRING} !domain=
RewriteCond %{HTTP_HOST} ^(.+?)\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ /index.php?domain=%1 [L,QSA]

在您的规则中,您使用[^\.]+匹配,直到找到一个点,因此它匹配google而不是google.com