在PHP网站上的IIS7 URLRewrite

我有一个运行在IIS7上的PHP站点,我需要添加一些URL重写,但到目前为止,它似乎忽略了我的规则。 这是规则:

<rewrite> <rules> <rule name="VCard" stopProcessing="true"> <match url="\?user=(.*)$" /> <action type="Rewrite" url="http://www.otherserver.com/vcard.aspx?user={R:1}" redirectType="Permanent" appendQueryString="false" logRewrittenUrl="true" /> </rule> </rules> </rewrite> 

当使用UI来testing我的正则expression式时,它说http://www.myserver.com/?user=123456符合规则,而R:1是“123456”。 但是,当我尝试访问实际的url,它似乎没有工作。

日志logging似乎不太有用:

 2010-10-26 14:22:07 XXX.XXX.XXX.XXX GET / user=12345 80 - XXX.XXX.XXX.XXX Mozilla/5.0 (Windows;+U;+Windows+NT+6.1;+en-US)+AppleWebKit/534.10 (KHTML,+like+Gecko)+Chrome/8.0.552.11+Safari/534.10 200 0 0 187 

正如我上面提到的,该网站本身是在PHP(我不熟悉在IIS上托pipe)。 那可以防止重写模块运行? 我错过了关键的一步?

URL匹配仅用于查询string之前的URL,如文件夹/ vcard.aspx。

这可能是您需要的{QUERY_STRING}条件。 设置。*为url,如果你想抓住一切。 只是要小心,你不会遇到该查询的循环。

这可能会有帮助: http : //weblogs.asp.net/owscott/archive/2010/04/20/url-parts-available-to-url-rewrite-rules.aspx

它不应该是PHP的问题。 redirect发生在处理PHP之前。