我正在努力使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。
答案 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>
注意:您可以根据需要修改主机名。
关于, 贾帕(Jalpa)