Mod_Rewrite子域/路径重写问题

时间:2011-03-08 21:16:10

标签: regex apache .htaccess mod-rewrite url-rewriting

我有一个现有的规则来重写:
subdomain.domain.com

这种格式:
domain.com/directory/index.aspx?id=subdomain

RewriteCond %{HTTP_HOST} !^www\. [NC]<br/>
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com [NC]<br/>
RewriteRule ^$ /directory/index.aspx?id=%1 [NC,QSA,L]



我需要更新此内容以支持:
subdomain.domain.com/foo

这种格式:
domain.com/directory/foo.aspx?id=subdomain

我试图对现有规则进行以下更改但没有成功:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com/(.*)
RewriteRule ^$ /directory/%2.aspx?id=%1 [NC,QSA,L]

第二个RewriteCond似乎没有匹配。我错过了一些容易的事吗?这应该以不同的方式处理吗? 感谢。

1 个答案:

答案 0 :(得分:0)

HTTP_HOST变量包含HTTP“Host:”标头中的值 - 在您的情况下,即“subdomain.domain.com”。尾随URI(斜杠等)不存在。

您需要在规则中匹配该部分网址:

RewriteCond %{HTTP_HOST} !^www\. [NC]<br/>
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com [NC]<br/>
RewriteRule ^/([^/]+)$ /directory/$1.aspx?id=%1 [NC,QSA,L]

萨吕,

霍尔迪阿。