繁体   English   中英

IIS7的URL重写模块未正确处理重写规则

[英]URL Rewrite module for IIS7 Not Handling Rewrite Rule Correctly

我有附加的重定向和重写规则。 本质上,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=([^=&amp;]+)$" />
</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}" />

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

您需要的是友好模式更独特的东西。 如果您知道它总是数字,那么您可以:

<match url="^([\d]+)/?$" />

仅与www.foo.com/{digits}匹配,并带有可选的斜杠。

另一种选择是使网址类似www.foo.com/s/{stockno}/。 使用/ s /,您可以放心地匹配一些独特的东西。 S只是stockno的缩写,因此您可以使用所需的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM