PHP 网站上的 IIS7 URLRewrite

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 测试我的正则表达式时,它显示http://www.myserver.com/?user=123456确实符合规则,并且 R:1 为“123456”。但是当我尝试访问实际 URL 时,它似乎不起作用。

日志记录似乎没有什么帮助:

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 上托管)。这会阻止重写模块运行吗?我是否遗漏了某个关键步骤?

答案1

URL 匹配仅针对查询字符串之前的 URL,例如 folder/vcard.aspx。

这可能是您需要的 {QUERY_STRING} 条件。如果您想捕获所有内容,请为 URL 设置 .*。只要小心不要陷入该查询的循环即可。

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

它是否是 PHP 并不重要。重定向发生在它处理 PHP 之前。

相关内容