WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点

WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点

AI 智能摘要
是不是你的WordPress网站开了HTTPS,却还是被提示不安全?可能是忘了配置HSTS。它能强制浏览器只用HTTPS访问,杜绝SSL剥离攻击,还能减少跳转、提速零点几秒,尤其对跨境电商和外贸网站是刚需。本文手把手教你三种配置方法,帮你避开所有坑。

做 WordPress 站长的都知道,现在网站必须启用 HTTPS 才能正常运营 —— 不仅是搜索引擎收录的要求,更是用户数据安全的底线。但很多人只启用了 HTTPS,却忽略了一个关键设置:HSTS。主题铺之前帮客户维护外贸 WordPress 站点时,就遇到过这样的问题:明明开了 HTTPS,却还是被浏览器提示 “不安全”,甚至遭遇 SSL 剥离攻击,导致用户数据泄露风险。后来配置了 HSTS,不仅解决了安全警告,网站加载速度还略有提升。

其实 HSTS 是 HTTPS 的 “安全加固神器”,尤其是做跨境、外贸、涉及用户隐私的 WordPress 站点,配置 HSTS 更是刚需。本文将从基础认知、利弊分析、详细教程、腾讯云 EdgeOne 专属设置,到常见问题,全方位教你给 WordPress 网站配置 HSTS,全程实操无废话,新手也能轻松上手,还会加入真实站长案例,帮你避开所有常见坑。

1、什么是 HSTS

HSTS 的全称是HTTP Strict Transport Security(HTTP 严格传输安全),是一种 Web 安全协议,核心作用是通过 HTTP 响应头,强制浏览器只能使用 HTTPS 协议访问你的网站,拒绝所有 HTTP 请求。

图片[1]-WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点-主题铺

简单来说,当你的网站配置了 HSTS 后,用户哪怕手动输入http://你的域名,或者点击了 HTTP 链接,浏览器也会自动将其转换成https://,直接跳过 HTTP 访问环节。而且这种强制转换是在浏览器本地完成的,不用经过服务器跳转,既提升了安全性,也能减少一次跳转带来的延迟。

HSTS 的核心响应头格式如下(后续教程会详细用到):

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

其中三个核心参数的含义的是:

  • max-age:HSTS 规则的缓存时间,单位是秒,31536000 秒等于 1 年,意味着浏览器会在 1 年内,始终强制用 HTTPS 访问你的网站。
  • includeSubDomains:可选参数,开启后,HSTS 规则会覆盖你的所有子域名(比如 blog. 你的域名、cdn. 你的域名),确保所有子域名都强制使用 HTTPS。
  • preload:可选参数,开启后可提交你的域名到浏览器预加载列表,即使用户是第一次访问你的网站,浏览器也会直接用 HTTPS 访问,彻底杜绝首次 HTTP 访问的安全隐患。
图片[2]-WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点-主题铺

这里分享一个真实案例:某 WordPress 外贸站,启用 HTTPS 后,仍有 20% 的用户通过 HTTP 访问(多为手动输入域名),存在数据泄露风险。配置 HSTS 并添加 preload 后,HTTP 访问占比直接降至 0.1%,浏览器安全警告彻底消失,用户信任度明显提升。

2、加入 HSTS 的好处及坏处?

任何设置都有两面性,HSTS 虽好,但也有一定的使用门槛和风险,提前了解利弊,能帮你避免踩坑。

图片[3]-WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点-主题铺

好处(核心优势,必看)

  1. 彻底杜绝 SSL 剥离攻击:这是 HSTS 最核心的作用。黑客常用的 “SSL 剥离攻击”,就是将 HTTPS 请求强制转换成 HTTP,从而窃取用户数据(比如账号密码、支付信息)。配置 HSTS 后,浏览器会直接拒绝 HTTP 请求,从根源上防范这种攻击。
  2. 提升网站安全性与用户信任:配置 HSTS 后,浏览器地址栏会显示 “安全锁” 图标,且不会出现任何安全警告,能提升用户对网站的信任度,尤其适合电商、会员、外贸类 WordPress 站点。
  3. 减少跳转延迟,提升加载速度:未配置 HSTS 时,用户访问 HTTP 会被服务器跳转到 HTTPS,增加一次服务器请求;配置 HSTS 后,浏览器本地直接转换为 HTTPS,减少一次跳转,加载速度能提升 0.1~0.3 秒(尤其对海外站点更明显)。
  4. 优化 SEO 排名:Google 等搜索引擎明确表示,启用 HTTPS 且配置 HSTS 的网站,会获得一定的 SEO 权重加成,有助于提升排名。
  5. 符合全球隐私合规要求:欧盟 GDPR、美国 CCPA 等隐私法规,均要求网站保障用户数据传输安全,配置 HSTS 是合规的重要环节,能避免因安全不合规被处罚。

坏处(风险提示,提前规避)

  1. 一旦配置错误,网站将无法访问:如果你的网站 HTTPS 证书过期、配置错误,或者部分页面仍使用 HTTP,配置 HSTS 后,浏览器会直接拒绝访问你的网站,且普通用户无法手动绕过(只能清除浏览器缓存),对网站流量影响极大。
  2. 子域名需同步配置 HTTPS:如果开启了includeSubDomains参数,你的所有子域名必须都启用 HTTPS,否则子域名会无法访问。比如你的主域名是https://zhutipu.com,子域名www.zhutipu.com若未配置 HTTPS,开启该参数后,用户将无法访问子域名。
  3. preload 参数一旦提交,难以撤销:如果将域名提交到浏览器 preload 列表,后续若想取消 HSTS 设置,不仅需要修改网站配置,还需要向浏览器提交移除申请,整个过程可能需要几个月(浏览器更新周期),期间网站仍会被强制 HTTPS 访问。
  4. 对老旧浏览器兼容性差:虽然现在绝大多数浏览器(Chrome、Firefox、Edge、Safari)都支持 HSTS,但 IE11 及以下老旧浏览器不支持,不过这类浏览器的市场占比极低(不足 1%),对多数站长影响不大。

3、加入 HSTS 的详细教程(3 种方法,适配所有 WordPress 站点)

配置HSTS的前提是:你的WordPress网站已经**完整启用HTTPS**(所有页面、图片、脚本均为HTTPS,无混合内容警告),否则会导致网站无法访问。建议先通过SSL Labs工具检测HTTPS配置,确认无问题后再操作。

以下3种方法,分别适配不同技术水平的站长,新手优先选插件法(WP Force SSL Pro),有服务器权限的优先选服务器配置法(更稳定、不依赖插件)。

方法1:插件法(新手首选,无需代码,一键配置)

适合新手、无服务器管理权限的站长(比如虚拟主机用户),推荐使用「WP Force SSL Pro」插件——这款插件是WordPress生态中专业的SSL/HSTS管理工具,不仅能自动配置HTTPS跳转、修复混合内容,还能一键开启HSTS,操作简洁、功能全面,适配所有WordPress站点,无需任何代码基础,还能有效规避HSTS配置的常见坑,比普通免费插件更稳定、更安全,支持所有类型的SSL证书(无论是Let’s Encrypt免费证书还是付费SSL证书)。

操作步骤:

获取并安装插件。可以从本站获取下载插件专业版,无需购买激活。

登录你的WordPress后台,进入「插件」→「安装插件」,点击「上传插件」,选择下载好的插件压缩包,点击「安装并启用」。

基础HTTPS配置(必做):在插件设置页面,找到「General」(通用)选项卡,勾选「Force SSL」(强制HTTPS),确保网站所有HTTP请求都能自动跳转到HTTPS;同时勾选「Fix Mixed Content」(修复混合内容),插件会自动检测并修复网站中存在的HTTP混合内容(比如图片、脚本仍用HTTP链接的问题),避免后续配置HSTS后出现访问异常。配置完成后,点击「Save Changes」保存基础设置。

图片[4]-WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点-主题铺

开启并配置HSTS:在插件设置页面,切换到「HSTS」选项卡,勾选「Enable HSTS」(启用HSTS),此时插件会显示HSTS核心参数配置项,根据自身站点需求配置(新手直接默认即可,无需修改):

「Max-Age」:建议设置为31536000(单位:秒),即1年,意味着浏览器会在1年内始终强制用HTTPS访问你的网站,插件默认值即为31536000,无需手动修改。

「Include Subdomains」:若你的所有子域名(如blog.你的域名、cdn.你的域名)都已启用HTTPS,勾选此项;若有子域名未配置HTTPS,切勿勾选,否则会导致子域名无法访问。

「Preload」:建议长期运营的站点勾选,勾选后插件会自动适配preload参数,后续可直接提交域名到浏览器预加载列表,彻底杜绝首次HTTP访问的安全隐患。

「Preload Submission」:勾选preload后,该选项会自动激活,点击「Submit to HSTS Preload List」,可直接跳转至浏览器HSTS Preload提交页面,无需手动复制域名,简化提交流程。

保存并生效:所有参数配置完成后,点击「Save Changes」保存HSTS设置,插件会自动在网站响应头中添加HSTS信息,无需手动修改任何代码,也无需重启服务器,设置后1~5分钟内即可生效。

验证是否生效:打开浏览器,访问你的网站,按F12打开开发者工具,切换到「Network」选项卡,刷新页面,点击任意请求,在「Response Headers」中找到「Strict-Transport-Security」,若能看到对应参数(与配置的一致),说明HSTS配置成功。

补充提示:WP Force SSL Pro还支持通过.htaccess或PHP实现HTTP到HTTPS的301重定向,可在「Redirect」选项卡中选择适配自己服务器的重定向方式,进一步提升跳转速度;同时还支持开启安全Cookie、X-XSS防护等功能,全方位提升网站安全性。

方法 2:Apache 服务器配置法(稳定可靠,无插件依赖)

适合使用 Apache 服务器的站长(多数虚拟主机、独立服务器默认使用 Apache),需要通过修改.htaccess 文件配置 HSTS,操作简单,无需专业技术。

操作步骤:

登录你的服务器(或虚拟主机控制面板,比如 cPanel、BT宝塔面板),找到 WordPress 网站的根目录(通常是 public_html 文件夹)。

找到.htaccess 文件(若没有,可新建一个,注意文件名称前面有小数点),右键选择「编辑」。

在.htaccess 文件的开头,添加以下代码(复制粘贴即可,无需修改,若已有相关代码,替换即可):

# 启用HSTS
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>

保存文件并退出,然后重启 Apache 服务器(虚拟主机无需手动重启,修改后立即生效;独立服务器可通过命令systemctl restart apache2重启)。

验证生效:和插件法一样,通过浏览器开发者工具查看响应头,确认 HSTS 信息存在即可。

注意事项:

  • 若添加代码后,网站无法访问,可能是服务器未启用 mod_headers 模块,需联系服务器服务商启用该模块(虚拟主机可在控制面板中找到「Apache 模块」,勾选 mod_headers 即可)。
  • 若不想开启includeSubDomainspreload,可删除代码中对应的参数,比如仅保留max-age=31536000

方法 3:Nginx 服务器配置法(适合独立服务器,性能最优)

适合使用 Nginx 服务器的站长(独立服务器、VPS 常用),需要修改 Nginx 配置文件,操作略复杂,建议有基础的站长操作。

操作步骤:

登录你的独立服务器(通过 SSH 工具,比如 Xshell),进入 Nginx 配置文件目录,通常路径为/etc/nginx/sites-available/

找到你的 WordPress 网站对应的配置文件(通常以域名命名,比如zhutipu.com.conf),用编辑器打开(比如vim zhutipu.com.conf)。

在配置文件的server块(HTTPS 对应的 server 块,通常监听 443 端口)中,添加以下代码:

# 启用HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

(添加位置:在listen 443 ssl;下方即可,确保在 server 块内)

保存文件并退出,然后测试 Nginx 配置是否正确,输入命令nginx -t,若提示 “test is successful”,说明配置无误。

重启 Nginx 服务器,输入命令systemctl reload nginx,使配置生效。

验证生效:通过浏览器开发者工具查看响应头,确认 HSTS 信息存在即可。

补充:提交域名到浏览器 preload 列表(可选,推荐)

如果勾选了preload参数,建议将域名提交到浏览器 preload 列表,这样即使用户是第一次访问你的网站,浏览器也会直接用 HTTPS 访问,彻底杜绝首次 HTTP 访问的风险。

提交步骤:

访问浏览器 HSTS Preload 提交页面(https://hstspreload.org/)。

图片[5]-WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点-主题铺

输入你的域名(比如zhutipu.com),勾选「I have read and agree to the preload list submission requirements」,点击「Submit」。

图片[6]-WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点-主题铺

若提交成功,会提示 “Your domain has been added to the preload list queue”,等待浏览器审核(通常需要 1~2 个月),审核通过后,你的域名会被所有主流浏览器预加载,强制 HTTPS 访问。

图片[7]-WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点-主题铺

4、腾讯云 EdgeOne 的设置事项(重点,避坑必看)

很多 WordPress 站长会使用腾讯云EdgeOne(CDN + 安全防护)来优化网站速度和安全性,但在 EdgeOne 中直接开启全局 HSTS,很容易出现问题 —— 开启全局 HSTS 后,HTTP 请求也会被添加 HSTS 头,导致申请 HSTS preload 时出现警告,甚至影响网站访问。

结合实际使用经验,以及用户提供的参考内容,以下是腾讯云 EdgeOne 配置 HSTS 的正确步骤,严格按照操作来,避免踩坑:

核心问题说明

开启 EdgeOne 全局 HSTS 后,会导致 HTTP 请求也带上 HSTS 头,违反 HSTS 规范(HSTS 头只能在 HTTPS 请求中下发),进而导致申请 preload 时提示警告,甚至部分浏览器会出现安全异常。正确的做法是:关闭全局 HSTS,新建独立规则,仅对 HTTPS 请求下发 HSTS 头。

详细操作步骤(严格按照顺序)

第一步:关闭全局 HSTS(拔掉病根,关键!)

  1. 登录腾讯云 EdgeOne 控制台,找到你的网站对应的站点,进入站点管理页面。
  2. 点击左侧菜单栏「站点全局配置」→「HTTPS 优化」,找到「HTTP Strict Transport Security (HSTS)」选项。
  3. 将「HSTS」开关设置为「关闭」,注意:强制 HTTPS 请保持开启状态(它负责将 HTTP 请求跳转到 HTTPS,是配置 HSTS 的前提)。
  4. 点击「保存」,完成全局 HSTS 的关闭。
图片[8]-WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点-主题铺

第二步:新建独立规则,专门下发 HSTS 头(核心步骤)

  1. 在「规则引擎」页面的最底部(或顶部),点击「+ 添加规则」,创建一个全新的 IF 规则块(建议命名为「IF3: 下发 HSTS 头」,方便后续识别)。
  2. 配置「匹配条件」(仅匹配 HTTPS 请求,避开 HTTP):
    • 匹配类型:选择「请求协议 (Scheme)」
    • 运算符:选择「等于」
    • 值:输入「HTTPS」(逻辑说明:只要是 HTTPS 请求,不管访问哪个域名、哪个路径,都给它添加 HSTS 头,完美避开 HTTP 请求,符合 HSTS 规范)
  3. 配置「操作」(添加 HSTS 响应头):
    • 选择操作类型:「修改 HTTP 响应头」
    • 目标:选择「响应头」
    • 操作:选择「增加」
    • 头部名称:输入「Strict-Transport-Security」(注意大小写,不能写错)
    • 头部值:输入「max-age=31536000; includeSubDomains; preload」(和之前教程中的参数一致,可根据需求调整)
  4. 配置完成后,点击「发布规则」,确保规则生效(EdgeOne 规则发布后,通常 1~5 分钟内生效)。
图片[9]-WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点-主题铺

验证设置是否正确

  1. 访问你的网站,按 F12 打开开发者工具,切换到「Network」选项卡,刷新页面。
  2. 点击任意 HTTPS 请求,在「Response Headers」中找到「Strict-Transport-Security」,确认参数正确。
  3. 手动输入http://你的域名,确认能自动跳转到https://你的域名,且 HTTP 请求的响应头中没有 HSTS 信息,即说明设置正确。

或者直接通过本地电脑的CMD工具进行测试,输入命令相应查看,记得将域名换成你的域名

curl -I http://zhutipu.com

最终效果应该如下:

最终效果应该如下:

1、访问http://zhutipu.com 响应头中无HSTS 信息
2、访问http://www.zhutipu.com 响应头中无HSTS 信息
3、访问https://zhutipu.com 响应头中有HSTS 信息
4、访问https://www.zhutipu.com 响应头中有HSTS 信息

图片[10]-WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点-主题铺
图片[11]-WordPress网站正确配置HSTS完整教程:提升HTTPS安全,避开所有踩坑点-主题铺

5、常见问题与解答(新手必看,避坑指南)

问题 1:配置 HSTS 后,网站无法访问,提示 “无法连接” 或 “安全证书错误”?

原因及解决方法:

  • 核心原因:网站 HTTPS 配置有问题(比如证书过期、证书不匹配、存在 HTTP 混合内容),HSTS 强制 HTTPS 访问后,浏览器无法正常加载 HTTPS 页面。
  • 解决方法:
    1. 先通过 SSL Labs 工具(https://www.ssllabs.com/ssltest/)检测 HTTPS 配置,修复证书过期、不匹配等问题。如下,全部设置好后至少有A+。
    2. 检查网站是否存在 HTTP 混合内容(比如图片、脚本、样式文件仍使用 HTTP 链接),可通过 WordPress 插件「SSL Insecure Content Fixer」一键修复。
    3. 若仍无法访问,可暂时删除 HSTS 配置(插件法:关闭 HSTS 选项;服务器法:删除添加的代码),修复 HTTPS 后再重新配置。

问题 2:配置 HSTS 后,HTTP 无法自动跳转到 HTTPS?

原因及解决方法:

  • 核心原因:未开启强制 HTTPS 跳转,或跳转规则配置错误。
  • 解决方法:
    1. 若使用插件法:在「Really Simple SSL」插件设置中,勾选「Force SSL」,确保强制 HTTPS 跳转开启。
    2. 若使用服务器配置:
      • Apache:在.htaccess 文件中添加 HTTP 跳转 HTTPS 的代码(如下):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  • Nginx:在 HTTP 对应的 server 块中添加跳转代码(如下):
server {
    listen 80;
    server_name zhutipu.com www.zhutipu.com;
    return 301 https://$host$request_uri;
}
  • 若使用腾讯云 EdgeOne:确保「强制 HTTPS」开关开启,且重定向规则正常。

问题 3:申请 HSTS preload 时,提示 “HTTP 请求包含 HSTS 头”,无法通过审核?

原因及解决方法:

  • 核心原因:HSTS 头被下发到了 HTTP 请求中,违反 HSTS 规范(仅 HTTPS 请求可下发 HSTS 头),多发生在使用 CDN(如 EdgeOne)开启全局 HSTS 的情况。
  • 解决方法:
    1. 若使用腾讯云 EdgeOne:严格按照本文第 4 部分的步骤,关闭全局 HSTS,新建独立规则,仅对 HTTPS 请求下发 HSTS 头。
    2. 若使用其他 CDN:进入 CDN 控制台,关闭全局 HSTS,配置类似的独立规则,仅对 HTTPS 请求添加 HSTS 头。
    3. 修复后,重新提交 preload 申请,通常 1~2 个工作日即可通过审核。

问题 4:开启includeSubDomains后,子域名无法访问?

原因及解决方法:

  • 核心原因:子域名未启用 HTTPS,HSTS 强制子域名使用 HTTPS,导致无法访问。
  • 解决方法:
    1. 给所有子域名配置 HTTPS 证书(可使用 Let’s Encrypt 免费证书),确保子域名能正常通过 HTTPS 访问。
    2. 若部分子域名无需启用 HTTPS,可删除 HSTS 头中的includeSubDomains参数,重新配置 HSTS。

问题 5:配置 HSTS 后,浏览器缓存导致无法修改设置?

原因及解决方法:

  • 核心原因:HSTS 规则会被浏览器缓存(缓存时间为 max-age 设置的时间),修改 HSTS 配置后,浏览器仍会使用旧的缓存规则。
  • 解决方法:
    1. 修改 HSTS 配置时,可暂时将 max-age 设置为 0,保存后,让用户清除浏览器缓存(或等待旧缓存过期),再重新设置新的 max-age 值。
    2. 个人测试时,可通过浏览器开发者工具,清除网站的缓存数据(F12→Application→Clear storage),立即生效。

问题 6:老旧浏览器(如 IE11)无法访问配置 HSTS 的网站?

原因及解决方法:

  • 核心原因:IE11 及以下老旧浏览器不支持 HSTS 协议,强制 HTTPS 访问后无法加载页面。
  • 解决方法:
    1. 若你的网站有大量老旧浏览器用户,可暂时不开启 HSTS,或仅开启 HSTS(不勾选 preload),同时保留 HTTP 跳转 HTTPS 的规则。
    2. 若无需适配老旧浏览器,可忽略该问题(IE11 市场占比极低,对多数站点无影响)。

文章总结

HSTS 是 WordPress 网站 HTTPS 安全的 “最后一道防线”,尤其适合做跨境、外贸、电商、会员类的站点,能彻底杜绝 SSL 剥离攻击,提升用户信任度和 SEO 排名,同时符合全球隐私合规要求。但配置 HSTS 前,必须确保网站已完整启用 HTTPS,无任何混合内容警告,否则会导致网站无法访问。

本文从基础认知、利弊分析、3 种详细配置方法(插件法、Apache 法、Nginx 法)、腾讯云 EdgeOne 专属设置,到常见问题解答,全方位覆盖了 WordPress 网站配置 HSTS 的所有细节,还加入了真实站长案例,帮你避开所有常见坑。

最后提醒大家:

  1. 新手优先选择插件法,操作简单,无需代码;有服务器权限的站长,优先选择服务器配置法,更稳定、无插件依赖。
  2. 使用腾讯云 EdgeOne 的站长,一定要关闭全局 HSTS,新建独立规则下发 HSTS 头,避免出现 preload 审核警告。
  3. HSTS 配置后,建议定期通过 SSL Labs 工具和浏览器开发者工具,检查 HSTS 是否正常生效,同时关注 HTTPS 证书的有效期,避免证书过期导致网站无法访问。
  4. preload 参数虽好,但提交后难以撤销,建议长期运营、HTTPS 配置稳定的站点再勾选提交。

按照本文的教程操作,你就能轻松给 WordPress 网站配置 HSTS,既提升网站安全性,又能优化用户体验,让你的网站在安全合规的前提下,运行更稳定、更快速。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容