【发布时间】:2019-01-22 20:41:59
【问题描述】:
我的 URL 重写代码出现了最奇怪的行为。它是一个 .NET 应用程序,代码在配置文件中。所有其他重写都按预期工作。
要重写的网址:
代码:
<rule name="OrderDetails" stopProcessing="true">
<match url="^projects/offer_details.aspx$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{QUERY_STRING}" pattern="artistID=(\d+)" />
<add input="{QUERY_STRING}" pattern="projectID=(\d+)" />
<add input="{QUERY_STRING}" pattern="recordID=(\d+)" />
<add input="{QUERY_STRING}" pattern="selection=(\d+)" />
<add input="{QUERY_STRING}" pattern="salesTypeID=(\d+)" />
</conditions>
<action type="Redirect" url="/OfferDetails/{C:1}/{C:2}/{C:3}/{C:4}/{C:5}" appendQueryString="false" />
</rule>
这是我在 Fiddler 中看到的:
GET /OfferDetails/64?artistID=64&projectID=100&recordID=1353&selection=1&salesTypeID=6
它看起来好像捕获了第一个参数并且页面正常,但它忽略了所有其他值并添加了查询字符串,即使 appendQueryString="false" 也是如此。
这是它应该重定向到的:
http://www.example.com/projects/OfferDetails/64/100/1353/1/6
有什么想法吗?我难住了。重新启动了网站。清除所有缓存和nada。
【问题讨论】:
-
我测试了这个重写规则,它运行良好。您的应用程序中是否还有其他重写规则?也许另一个规则首先匹配请求
-
@redoc 你在不同的浏览器上看到同样的问题吗?