我有附加的重定向和重写规则。基本上,www.foo.com/vehicles/vehicle-detail.aspx?stockno=123456被重写为www.foo.com/123456。这符合我所拥有的规则。现在,如果我尝试浏览到不存在的页面(即www.foo.com/test.aspx),则重写规则符合条件,IIS会尝试将请求转发到www.foo.com/vehicles/vehicle-detail。 aspx(没有查询字符串)。在vehicle-detail.aspx页面上,如果查询字符串中没有有效的stockno,我有代码重定向到主页,所以这就是正在发生的事情。我不确定如何纠正规则,因此条件不符合真实条件。我附加了失败请求跟踪的规则和屏幕截图,我启用了查看请求/重写规则。
<rule name="Redirect StockNo" enabled="true" stopProcessing="true">
<match url="^Vehicles/Vehicle-Detail\.aspx$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
<add input="{QUERY_STRING}" pattern="^stockno=([^=&]+)$" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
<rule name="Rewrite StockNo" enabled="true" stopProcessing="true">
<match url="^([^/]+)/?$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="Vehicles/Vehicle-Detail.aspx?stockno={R:1}" />
答案 0 :(得分:0)
您需要的是友好模式更独特的东西。如果您知道它总是数字,您可以:
<match url="^([\d]+)/?$" />
这只会与www.foo.com/{digits}匹配,并带有可选的斜杠。
另一种选择是将网址设置为www.foo.com/s/{stockno}/。使用/ s /你有一些独特的东西,你可以自信地匹配。 S只是stockno的一个例子,所以你可以使用你想要的东西。