使用IIS将所有URL重定向到HTTPS / WWW版本

时间:2017-03-30 11:00:36

标签: c# asp.net iis web-config

我有一个网站,刚刚购买了SSL。我希望所有URL都重定向到他们的HTTPS / WWW版本。例如:

1. http://mywebsite.com       ->   https://www.mywebsite.com
2. https://mywebsite.com      ->   https://www.mywebsite.com
3. http://www.mywebsite.com   ->   https://www.mywebsite.com
4. https://www.mywebsite.com  ->   [No redirect needed]

我已经尝试了一些解决方案:thisthis来自标记为答案的方法。但对于案例2,几乎所有答案都会返回“Not Found. HTTP Error 404”,即https://mywebsite.com未重定向到https://www.mywebsite.com,而是返回404。

已经尝试过的解决方案:

1

<rule name="Redirect top domains with non-www to www" stopProcessing="true">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^([^\.]+)\.([^\.]+)$" />
      </conditions>
      <action type="Redirect" url="https://www.{HTTP_HOST}/{R:1}" redirectType="Permanent" />
      <serverVariables>
        <set name="Redirect" value="false" />
      </serverVariables>
</rule>
<rule name="Force HTTPS" enabled="true" stopProcessing="true">
      <match url="(.*)" ignoreCase="false" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTPS}" pattern="off" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
 </rule>

2

<rule name="Force WWW and SSL" enabled="true" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny">
      <add input="{HTTP_HOST}" pattern="^[^www]" />
      <add input="{HTTPS}" pattern="off" />
  </conditions>
  <action type="Redirect" url="https://www.zzz.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>

似乎其他人也有这个问题。但我找不到合适的解决方案。

1 个答案:

答案 0 :(得分:1)

问题出在IIS的Site Bindings部分。 https://mywebsite.com没有记录。我添加了这条记录,问题中的解决方案也奏效了。有关此功能的详细信息,请访问this page