前言

公司服务器在更新 https 证书后,因为一些误操作的原因,一级域名 xxx.com 和非 https 的二级域名 www.xxx.com 都无法访问。之前做宣传印制的二维码访问的是一级 xxx.com,这样扫码页面就访问不了了。需要恢复一下,设置跳转到 www 和 https 链接。

解决过程

网上搜索到了 http 自动跳转 https 和主域名跳转到 www 子域名的教程,这边做一个整理合并。目标效果是

  • http://www.xxx.com 自动跳转到 https://www.xxx.com
  • xxx.com 自动跳转到 https://www.xxx.com

这似乎已经成了一个约定的用法了,www 二级域名作为一个网站的主站点,甚至 Chrome 浏览器会将 www.xxx.com 的 www 部分默认隐藏。下载的 DVSSL 证书也是同时支持主域名和 www 二级域名解析的:

阿里云 SSL 证书管理
阿里云 SSL 证书管理

在做 https 跳转和 www 跳转之前,首先要确保网站已经绑定了 http://xxx.com:80http://www.xxx.com:80 的访问地址,并且 SSL 设置中的 要求 SSL 项要取消勾选。

网站绑定
网站绑定

SSL 设置
SSL 设置

这样非 https://www.xxx.com 的请求才能进入到站点,不然访问就会一片空白,或者 403 无权限访问。

之后是做 URL 规则重写。在 Apache 下,可以通过 ServerAlias 将主域名和 www 二级域名配置成一个站点,Nginx 需要 rewrite 正则匹配重写,而 IIS 可以使用一个叫做 URL 重写(rewrite) 的插件来创建重写规则。如果站点下的 IIS 工具栏里没有这一项,则需要去下载安装(也可以通过 Web 平台安装程序进行安装,若无 web 平台安装程序,下载地址)。网上有直接修改 web.config 文件配置方法的教程,其实 URL 重写最终也是写入到 web.config 文件中,只是 URL 重写插件有操作界面,配置规则更省力,不容易出错。

URL 重写工具
URL 重写工具

首先双击 URL 重写工具,进入到所有请求 URL 地址的入站规则列表,未添加时,默认是空的。点击右侧操作菜单中的添加规则,弹框中选择默认的空白规则,确定,进入到编辑规则页面。

编辑入站规则
编辑入站规则

名称可以任意填写,其他主要分成四个设置模块:匹配 URL、条件、服务器变量、操作。

第一项匹配 URL 中,选择与模式匹配,使用正则表达式,模式内填写 (.*),表示匹配所有 URL。

第二项条件中,进一步明确什么样的请求会被选中,然后执行最后的操作,做一个条件筛选。我这边添加了两个条件,逻辑分组选择了 任意匹配,意思跟 or|| 差不多,表示两个条件满足一个就选中了。

{HTTPS} 匹配模式 ^OFF$,表示 https 未开启的请求;{HTTP_HOST} 不匹配模式 ^www\.lejiao1688\.com$,表示非 www 域名访问(这条的模式是从规范域名的规则模板里拿到的)。

第三项服务器变量没有添加内容。

第四项操作里,就是在前面条件选中后,定义操作内容。选择重定向操作类型,重定向 URL 填写完整版的访问地址 https://www.xxx.com/{R:1}

在编辑结束时,需要点击右侧操作菜单里的应用来保存规则,这样 URL 重写规则就创建好了。