知识库

IIS 将 HTTP 重新导向到 HTTPS

在 IIS 中设置 HTTP/HTTPS 复位向

一旦 SSL 证书已安装,您的网站仍然可以通过常规不安全的 HTTP 连接访问。要安全地连接,访问者必须在浏览器中手动指定 https:// 前缀,当他们输入您网站的地址时。

为了强制您的网站使用安全连接,有必要设置某个 HTTP/HTTPS 复位向规则。这样,任何输入您网站的链接(如 'yourdomain.com')的用户将被复位向到 'https://yourdomain.com' 或 'https://www.yourdomain.com'(根据您的选择),使得服务器与客户端之间的流量加密。

以下是设置 IIS HTTPS 复位向的步骤:

  1. 下载并安装 'URL Rewrite' 模块。
  2. 打开 'IIS 管理员' 控制台,在左侧菜单中选择您想应用复位向的网站:

    iisred1

  3. 双击 'URL Rewrite' 图标。
  4. 在右侧菜单中单击 'Add Rule(s)'。
  5. 在 'Inbound' 部分中选择 'Blank Rule',然后按 'OK':

    iisred2

  6. 输入您希望的任何规则名称。
  7. 在 'Match URL' 部分:

    - 在 'Requested URL' 下拉菜单中选择 'Matches the Pattern'
    - 在 'Using' 下拉菜单中选择 'Regular Expressions'
    - 在 'Match URL' 部分中输入以下模式:'(.*)'
    - 勾选 'Ignore case' 框

    iisred3

  8. 在 'Conditions' 部分,选择 'Match all' 在 'Logical Grouping' 下拉菜单中,然后按 'Add'。
  9. 在弹出的窗口中:


    - 输入 '{HTTPS}' 作为条件输入
    - 从下拉菜单中选择 'Matches the Pattern'
    - 输入 '^OFF$' 作为模式
    - 按 'OK'

    iisred4

  10. 在 'Action' 部分,选择 'Redirect' 作为动作类型,并为 'Redirect URL' 指定以下内容:

    https://{HTTP_HOST}{REQUEST_URI}

  11. 勾选 'Append query string' 框。
  12. 选择您选择的复位向类型。整个 'Action' 部分应如下所示:

    iisredirect5

  13. 注意:在该菜单中有 4 种可以选择的复位向类型:
    - 永久(301)- 在这种情况下首选的类型,告知客户该网站内容已永久转移到 HTTPS 版本。对 SEO 有好处,因为它将所有流量引导到您的 HTTPS 网站,对其在搜索引擎中的排名产生积极影响。
    - 发现(302)- 仅在您将某些页面的内容*临时*移动到新位置时使用。这样 SEO 流量会对之前内容的位置有利。这个选项通常不建议用于 HTTP/HTTPS 复位向。
    - 其他查看(303)- 专门用于 GET 请求的特定复位向类型。不建议用于 HTTP/HTTPS。
    - 临时(307)- HTTP/1.1 的 302 复位向类型的后继者。不建议用于 HTTP/HTTPS。

  14. 在 'Actions' 菜单的右侧单击 'Apply'。

可以通过访问您网站的 http:// 指定的 URL 来检查 IIS 复位向。为确保您的浏览器显示的不是网站的缓存版本,可以使用浏览器的匿名模式。

规则已在 IIS 中创建,但网站仍未复位向到 https://

通常,复位向规则会写入网站的文文件根目录中的 web.config 文件。如果出于某种原因复位向不起作用,请确保 web.config 文件存在,并检查它是否包含相应的规则。

要做到这一点,请遵循以下步骤:

  1. 在 IIS 的网站列表中,右键单击您的网站。选择 'Explore' 选项:

    iisred6

  2. 'Explore' 将打开该站点的文文件根目录。检查是否有 web.config 文件。
  3. web.config 文件必须包含以下代码块:
    < configuration >
    < system.webServer >
    < rewrite >
    < rules >
    < rule name="HTTPS force" enabled="true" stopProcessing="true" >
    < match url="(.*)" / >
    < conditions >
    < add input="{HTTPS}" pattern="^OFF$" / >
    < /conditions >
    < action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" / >
    < /rule >
    < /rules >
    < /rewrite >
    < /system.webServer >
    < /configuration >
  4. 如果 web.config 文件缺失,您可以创建一个新的 .txt 文件,将上述代码放入其中,然后保存并重命名文件为 web.config。