2

所以我一直在尝试使用以下内容进行重写:

<rules>
  <rule name="HttpToHttps" stopProcessing="true"/>
    <match url="(.*)"/>
    <conditions>
      <add input="{HTTPS}" pattern="off" ignoreCase="true"/>
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{URL}"/>
  </rule>
<rules>

在两种环境中,这会像它应该的那样重定向。在第三种环境中,它不起作用。从某种意义上说,它不起作用,查看提琴手日志,我看到带有完整 url 的 http 调用。当它重定向到 https 时,它会删除 HTTP_HOST 之后的所有内容。

所以使用以下网址:

不安全的://www.mysite.com/page.aspx?var1=1&var2=2

在两种环境下,它变成

安全://www.mysite.com/page.aspx?var1=1&var2=2

在第三个中它变成:

安全://www.mysite.com

我尝试将其重写为 https://{HTTP_HOST}{HTTP_URL} 并且在前两个环境中将 {URL} 加倍:

安全://www.mysite.com/page.aspx?var1=1&var2=2&var1=1&var2=2

我对 web.configs 不是很有经验,我边走边学,所以如果有人对这里发生的事情有任何意见,将不胜感激。如果它对任何事情有任何影响,那么第三个环境位于两台负载平衡的服务器上。

4

1 回答 1

6

Ruslany 在他的博客上有几个 IIS URL Rewrite 示例,HTTP to HTTPS 就是其中之一:

<rule name="Redirect to HTTPS" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTPS}" pattern="^OFF$" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>

有关更多信息,请参阅http://ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/

于 2013-02-17T20:21:17.050 回答