【问题标题】:What is wrong with this URL Redirect code? Multiple query string values此 URL 重定向代码有什么问题?多个查询字符串值
【发布时间】:2019-01-22 20:41:59
【问题描述】:

我的 URL 重写代码出现了最奇怪的行为。它是一个 .NET 应用程序,代码在配置文件中。所有其他重写都按预期工作。

要重写的网址:

http://www.example.com/projects/offer_details.aspx?artistID=64&projectID=100&recordID=1353&selection=1&salesTypeID=6

代码:

<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 你在不同的浏览器上看到同样的问题吗?

标签: asp.net-mvc url-rewriting


【解决方案1】:

无法复制您的问题。如果您可以发布您的配置文件,将会很有帮助。

但是,我在重写规则中发现了另一个问题。您的重定向网址应为 /projects/OfferDetails/{C:1}/{C:2}/{C:3}/{C:4}/{C:5} 而不是 /OfferDetails/{C:1}/{C:2}/{C:3}/{C:4}/{C:5}

<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="/projects/OfferDetails/{C:1}/{C:2}/{C:3}/{C:4}/{C:5}" appendQueryString="false" />
</rule>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多