【问题标题】:IIS 7 Redirect from HTTP to HTTPS fail with ampersand in URLIIS 7 从 HTTP 重定向到 HTTPS 失败,URL 中带有 & 号
【发布时间】:2014-12-04 18:09:47
【问题描述】:

Windows Server 2008 R2 SP1 上的 IIS 7

我已将以下规则添加到我的 web.config 以将所有传入请求重定向到 HTTPS

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTPS}" pattern="off" ignoreCase="true" />
  </conditions>
  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>

当 URL 或文件名中存在与号 (&) 时,它会失败。我查看了一些提供的解决方案,但对允许特殊字符通过注册表不感兴趣。有没有办法在重定向规则之前执行重写以将 & 符号编码为 &amp;amp; 或 %26? HTTPS 重定向规则是使用原始 URL 还是新重写/编码的版本?

【问题讨论】:

  • 尝试将 & 的重写映射添加到 &并在 HTTPS 重定向之前放置一个规则来应用它,但它没有帮助。是否可以在同一个规则中重写和重定向?
  • 我正在使用 ASP.NET 4.5,发现一些帖子说在这种情况下允许在 URL 中使用特殊字符并禁用页面的 validateRequest 是可以的。如果有人想告诉我这是一个坏主意,我会留下这个问题。我没有输出在查询字符串中传递的任何内容。

标签: redirect iis iis-7 web-config rewrite


【解决方案1】:

我在 Windows Server 2012、IIS 8.5 上遇到了类似的问题,并为文件“Testing & Testing Again.pdf”设置了与以下类似的规则,以重定向到名为“yourdomain.com/”的新域/文件newPdfFileToDisplay.pdf"

 <rule name="Redirect pdf File">
    <match url="Testing ([&amp;]) Testing Again.pdf" />
    <action type="Rewrite" url="http://yourdomain.com/newPdfFileToDisplay.pdf" />
</rule>

【讨论】:

    猜你喜欢
    • 2016-02-26
    • 2012-07-23
    • 2011-09-16
    • 2013-06-11
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2019-09-03
    相关资源
    最近更新 更多