网址中包含文件名和扩展名时未触发IIS重写规则

时间:2019-05-29 15:42:46

标签: iis url-rewriting

我正在努力使IIS重写规则起作用。

旧网址如下: https://wwww.testserver.com/package.aspx?TrackingNumber=number

新的Web应用程序期望使用以下格式的网址: https://wwww.testserver.com/package/number

当前,我有以下规则设置,该规则不起作用。

<rule name="Rewrite to new Package site" stopProcessing="true"> <match url="^package\.aspx\?TrackingNumber=([_0-9a-z-]+)" /> <action type="Redirect" url="https://www.testserver.com/package/{R:1}" logRewrittenUrl="true" /> </rule>

有趣的部分是,如果我从规则中删除 package.aspx \?,则会匹配这些 https://wwww.testserver.com/oldwebsite/TrackingNumber=number 这样的网址。

在测试电话中,我将 package.aspx 替换为 package.html ,并且这些网址也没有匹配。看来IIS会忽略URL中带有文件名的URL。

1 个答案:

答案 0 :(得分:0)

您可以使用以下url重写规则将https://wwww.testserver.com/package.aspx?TrackingNumber=number重定向到https://wwww.testserver.com/package/number

<rule name="test" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" pattern="package(.aspx)" />
                    <add input="{QUERY_STRING}" pattern="TrackingNumber=(.*)" />
                </conditions>
                <action type="Redirect" url="http://localhost:2568/package/{C:1}" appendQueryString="false" />
            </rule>

enter image description here

注意:您可以根据需要修改主机名。

关于, 贾帕(Jalpa)