【问题标题】:IIS Redirecting non-WWW to WWW along with HTTP to HTTPS ISSUEIIS 将非 WWW 重定向到 WWW 以及 HTTP 到 HTTPS ISSUE
【发布时间】:2018-09-25 07:49:35
【问题描述】:

我想在 IIS 8.5 中将非 WWW 重定向到 WWW 以及 HTTP 到 HTTPS。如果用户输入http://example.com、http://www.example.com或https://example.com,他们都会重定向到https://www.example.com。

这是我的 web.config 文件

    <rewrite>
  <rules>
    <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.example.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite

请注意,在 IIS 中我只有 1 个绑定,即 example.com,问题是:对于所有重定向到 https://www.example.com 的 url,但 IIS 的起始页出现的不是我的 Default.aspx,当我输入https://www.example.com/Default.aspx 它给出 404 错误。

【问题讨论】:

    标签: asp.net iis web-config iis-8.5


    【解决方案1】:

    您需要将每个主机名绑定到一个网站。任何未明确绑定到网站(或服务器 IP 地址)的主机名将由 IIS 中的默认网站处理(绑定 * - 意味着任何未绑定到正在运行的网站的主机名)。

    一个不错的简单设置是在 IIS 中创建 2 个网站(我们称它们为 Application 和 Rewrites) - 一个用于托管您的应用程序,第二个用于将其他域重写为您的主域。您绑定到Rewrite 网站的任何域都会将其流量重定向到https://www.example.com。

    Application网站

    • 仅在端口 443 上绑定您的应用程序主机名 www.example.com(仅限 SSL)
    • 将您的应用程序部署到此 webroot

    Rewrite网站

    • 在 IIS 中创建一个新网站,并为其 webroot 创建一个新文件夹。
    • 在端口 443 和端口 80 上绑定 example.com。同时在端口 80 上绑定 www.example.com。

    在Rewrite网站webroot文件夹中创建一个web.config,如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
        <rewrite>
          <rules>
            <rule name="Redirect any traffic to Primary hostname" enabled="true" stopProcessing="true">
              <match url="(.*)" />
              <action type="Redirect" url="https://www.example.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
            </rule>
          </rules>
        </rewrite>        
      </system.webServer>
    </configuration>
    

    任何访问http://example.com、https://example.com 或http://www.example.com 的流量都将被重定向到https://www.example.com(包括任何路径/查询字符串)

    注意:您可以将默认网站用作 Rewrite 网站,或将通配符 * 绑定从默认网站移动到新的 Rewrite 网站 - 将任何域重定向到您的 https://www.example.com - 但是这是不好的做法/不建议。

    【讨论】:

    • Smith 我在 AWS 负载均衡器上安装了 ssl 证书,我应该将它安装在 IIS 上,而不是能够绑定端口 443 上的主机名
    • 您在问题中没有提到负载均衡器。以上解决方案我假设所有配置都在 iis 中完成。请更新您的问题以包含负载均衡器的详细信息,我将更新我的答案
    • 我会将此答案标记为正确答案,以帮助可能面临此问题的其他人,并会提出新问题
    猜你喜欢
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2013-06-11
    • 1970-01-01
    • 2017-11-24
    相关资源
    最近更新 更多