在WordPress网站上安装SSL证书需要三个步骤:在服务器上安装证书,将WordPress指向URL的HTTPS版本,并重定向旧的HTTP流量。现在大多数主机会为您处理第一步,自5.7版本起,WordPress自身就能处理第二步的大部分工作。本指南涵盖了这三个步骤,适用于免费和付费证书,并修复了之后通常会出现的错误。
快速答案:通过您的主机控制面板安装SSL证书,然后在WordPress中打开设置 > 常规,将WordPress地址(URL)和站点地址(URL)都更改为其https版本。最后添加一个301重定向,使HTTP请求转到HTTPS。
SSL(Secure Sockets Layer的缩写,尽管如今发行的每个证书实际上都使用TLS)就是将http://变成https://并从地址栏中移除”不安全”标签的东西。如果您想先了解背景知识,请阅读什么是SSL证书。否则,请从下表开始。
哪种方法适合您的设置
为WordPress添加SSL有三种方式,正确的选择几乎完全取决于您的主机。找到您的设置,然后跳转到对应的方法。
| 您的设置 | 使用此方法 | 大致耗时 |
|---|---|---|
| 托管WordPress主机 | 无需安装任何东西。证书通常已经启用,因此可以直接跳到将WordPress切换到HTTPS | 5分钟 |
| cPanel或类似的共享主机 | 方法1,主机自带的免费AutoSSL | 10分钟 |
| 没有SSL工具的主机,或您希望有人代劳 | 方法2,插件向导 | 10到15分钟 |
| VPS、独立服务器,或使用付费证书 | 方法3,手动安装 | 30分钟加验证时间 |
| Cloudflare位于网站前端 | 方法1或3,然后将Cloudflare SSL设置为Full(strict)。请参阅故障排除 | 15分钟 |
无论您选择哪种方式,都要先备份网站,如果您有测试环境,请先在那里进行更改,然后再对生产环境进行操作。
WordPress是否需要SSL证书?
是的,对大多数人来说,原因是他们已经能看到的:Chrome、Firefox、Safari和Edge都会在地址栏中将纯HTTP页面标记为不安全。该标签会出现在没有证书的网站的每一页上,包括登录表单。
解决这个问题的三个实际理由:
- 凭据和表单数据以明文传输。没有证书,同一网络上的任何人都能读取访问者提交的内容,包括您自己的WordPress密码。
- 支付要求使用它。如果您运营WooCommerce,或接受任何银行卡数据,HTTPS不是可选项。支付网关将拒绝通过HTTP运行。
- Google将HTTPS用作排名信号。这确实是一个真实的信号,但影响较轻,因此应将SEO这一论点视为附加好处而非主要理由。浏览器警告才是主要理由。
WordPress网站应该使用哪种SSL证书?
从免费选项开始,因为对于大部分WordPress网站来说,这确实是正确的答案。大多数主机会自动发行免费的Let’s Encrypt证书,而免费证书的加密效果与付费证书完全一样。加密方式是相同的。不同的WordPress SSL证书之间的差异在于证书颁发机构在发行证书前验证了什么,以及出现问题时您能获得什么。
验证级别
| 类型 | CA检查的内容 | 发行时间 | 适用于 |
|---|---|---|---|
| 域名验证(DV) | 您是否控制该域名 | 几分钟 | 博客、宣传网站、大多数WordPress安装 |
| 组织验证(OV) | 域名加上您注册的组织信息 | 1到3个工作日 | 商业网站、会员区、客户门户 |
| 扩展验证(EV) | 对公司进行全面的法律和运营核查 | 1到5个工作日 | 处理支付的商店、金融机构,以及任何身份识别重要的场景 |
如果您的网站运行在子域上,例如商店位于store.example.com,博客位于blog.example.com,一个通配符证书可以用一个证书覆盖它们全部,而不必为每个子域单独申请。不确定该选择哪种类型?SSL向导通过几个问题就能帮您缩小范围。
免费证书何时不再够用
免费证书仅为DV级别,有效期为90天,且不提供支持和保修。这对于个人博客来说没有问题。但在以下四种情况下会成为问题:
- 您接受支付。付费证书带有保修,可在证书本身出问题时弥补损失。免费证书则没有任何保障。
- 您的访问者需要了解您的身份。DV证书只能证明有人控制该域名。OV和EV会将您经过验证的组织信息写入证书中。
- 您运营多个子域。免费通配符证书的发行是可能的,但操作繁琐,通常需要主机可能不提供的DNS自动化功能。
- 续订不是自动的。一个90天期限却无人续订的证书,会像根本没有证书一样让网站下线。如果您的主机不自动续订,使用一个有效期更长的付费证书反而工作量更小,而不是更大。
方法1:从主机获取免费SSL证书
这是最快的途径,也是应该首先尝试的方法。几乎每家主机现在都提供免费的Let’s Encrypt证书,通常已经默认开启。
- 打开您的主机控制面板,查找SSL/TLS、Let’s Encrypt或AutoSSL。在cPanel中它位于安全下方。
- 选择您的域名并发行证书。同时包含裸域和www版本,否则其中一个会出现名称不匹配警告。
- 确认已启用自动续订。这是人们常常忽略的步骤。
如果您运行自己的VPS或独立服务器,完全没有主机面板?请使用Let’s Encrypt客户端Certbot,它可以通过命令行发行证书,并设置自己的续订计划。
Let’s Encrypt证书的有效期为90天,续订应该会自动进行,通常在到期前大约30天进行。当这种自动化出问题时(确实会出问题,通常是在域名转移或DNS记录变更之后),网站会在数周内看起来仍然正常,然后毫无警告地变成”不安全”。请在日历中为首次预期的续订日期设置提醒,并在该日期过后用SSL Checker检查证书。如果到期日期已推后,说明续订正在正常工作。
方法2:使用插件在WordPress上安装SSL
大多数人使用的插件是Really Simple Security。它在2024年9月之前名为Really Simple SSL,当版本9发布时,随着其免费功能集超出SSL设置范围,插件被重新命名。它拥有超过三百万个活跃安装量。
与名称一起改变的内容才是重点:该插件不再只是强制重定向,它还可以通过Let’s Encrypt向导为您获取证书。因此,当您的主机不提供该功能时,它能覆盖整个流程。
- 从插件 > 添加新插件安装并激活Really Simple Security。
- 跟随打开的引导流程,或前往插件在管理侧边栏添加的新的”安全”项目。较旧的教程会说是设置 > SSL,那是插件重命名之前的位置。如果服务器上已安装证书,插件会检测到它。
- 如果没有证书,选择安装SSL证书,然后按照向导获取一个免费的Let’s Encrypt证书。
- 选择激活SSL。插件会更新您的网站URL,设置重定向,并通过HTTPS重新加载仪表盘。
在您决定使用之前,有一个值得了解的注意事项。强制使用HTTPS的插件是在每次请求时通过PHP来实现的。而写入服务器配置中的重定向会在WordPress加载之前发生,速度更快,且即使插件被停用也能继续工作。如果您熟悉编辑服务器文件,请手动进行切换,并让插件避开关键路径。
方法3:手动安装SSL证书
这是适用于付费证书或没有一键工具的任何服务器的方法。在共享主机上,请先检查您的套餐是否允许安装第三方证书;一些低价主机仍会锁定此功能或对此收费。
- 生成CSR。证书签名请求会将您的域名和组织信息传递给证书颁发机构。使用我们的CSR生成器,或按照适用于您特定服务器的CSR指南操作。
- 提交CSR给证书颁发机构并完成验证。DV在几分钟内完成,OV和EV则需要几天时间。
- 安装文件。您将收到证书本身以及一个或多个中间证书。在cPanel中,将它们粘贴到SSL/TLS > Manage SSL sites下方,参照cPanel安装指南操作。其他平台的操作方式请参见SSL安装指南。
- 在操作WordPress之前,先用SSL Checker验证。
请注意中间证书。如果您安装了主证书但省略了证书链,大多数桌面浏览器仍会显示锁形图标,因为它们会缓存在其他地方见过的中间证书。移动浏览器、支付网关,以及任何通过API调用您网站的程序都会失败。一个”在Chrome中正常运行但结算流程出错”的网站,往往就是证书链不完整的问题,SSL Checker会报告这一点。
运行WordPress Multisite需要额外几个步骤,详见Multisite SSL指南。
将您的WordPress网站从HTTP切换到HTTPS
证书已在服务器上安装完成。但WordPress仍然不知道它的存在。这就是很多指南在此之前会让您先运行数据库搜索和替换的地方,而对大多数网站来说,这一步已经多年不再需要了。
WordPress自动完成的部分
自2021年3月发布的WordPress 5.7起,核心程序会检测您的环境是否支持HTTPS,并在工具 > 站点健康 > 状态下的HTTPS状态部分报告。当HTTPS可用时,该部分会提供一个按钮,一键切换网站。
更重要的是,一旦站点地址(URL)和WordPress地址(URL)都使用https,WordPress就会在渲染页面时重写内容中不安全的URL。以前保存为http地址的图片、链接和嵌入内容(在您自己域名内的)会以https方式提供,而您完全不需要编辑数据库。这正是较旧的教程告诉您要手动完成的步骤。
值得准确理解的是,这决定了您还需要做什么:重写发生在输出阶段,通过附加在内容显示时的过滤器实现。您的数据库仍然保存着旧的http URL。对访问者来说结果是相同的,这也是为什么迁移无需搜索和替换即可完成,但存储的数据本身并未改变。这在您导出网站、迁移到另一个主机,或直接查询数据库的那一天就会变得重要,也正是为什么最终仍值得运行一次搜索和替换,而不是永远不做的原因。
更改两个URL设置
如果站点健康没有提供一键按钮,或者您更愿意显式操作,请打开设置 > 常规。这里有两个字段,两者都需要更改:
- WordPress地址(URL),WordPress文件所在的位置。
- 站点地址(URL),访问者输入的地址。
将两处的http://都改为https://,然后保存。只更改其中一个是导致自己无法访问仪表盘的最常见原因。如果发生这种情况,您可以通过FTP在wp-config.php中设置这两个值:
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );
将这些行添加到写着”That’s all, stop editing”这一行的上方,并将example.com替换为您的域名。请注意,只要定义了这些常量,设置 > 常规中的相应字段就会变为只读状态。
何时仍需要搜索和替换
核心程序的重写覆盖的是已渲染的内容。它无法覆盖所有地方,因此对以下情况,搜索和替换仍然是解决方案:
- 硬编码在主题文件或functions.php中的URL。
- 以序列化数据形式存储的插件设置,这也是为什么您永远不应该运行纯粹的SQL查找和替换。
- 由页面构建器写入的选项行、自定义字段和小工具内容。
使用能正确处理序列化数据且具有试运行模式的Better Search Replace,或者使用WP-CLI:
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
阅读试运行输出,然后重复运行该命令但不加–dry-run来应用更改。先备份数据库。
通过301重定向在WordPress中强制使用HTTPS
您的网站现在可以通过https访问,但它仍然可以通过http访问,而每个旧链接和书签都指向那里。永久性HTTPS重定向会将访问者和搜索引擎都引导到安全版本,并传递旧URL的排名信号。尽可能在服务器级别而不是PHP中设置它。
Apache
在您WordPress根目录中的.htaccess文件顶部,即WordPress代码块的上方,添加以下内容:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
R=301标志使其变为永久重定向。如果规则写成[R,L],则会发出临时的302重定向,这是一个值得留意的错误,尤其是当您从较旧的指南复制重定向规则时。
Nginx
Nginx没有.htaccess文件,也不理解为Apache编写的重写规则。请改为编辑站点配置中的server块:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
使用nginx -t测试配置,然后使用systemctl reload nginx重新加载。
仅在仪表盘上强制HTTPS
要专门保护登录和管理区域,请将以下内容添加到wp-config.php中:
define( 'FORCE_SSL_ADMIN', true );
这涵盖了wp-admin和登录页面。它不会重定向前端,因此它是服务器级重定向的补充,而不是替代。
HSTS,在一切正常运行后再启用
HSTS会告知浏览器彻底拒绝对您的域名使用纯HTTP,从而消除首次请求和重定向之间的空隙。在Apache上:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
只有在HTTPS已经稳定运行一段时间后才添加此项,并且一开始先不要开启preload指令。预加载很难快速撤销,如果某个子域上的任何内容尚未使用HTTPS,它就会变得无法访问。
修复切换后留下的问题
混合内容
混合内容指的是通过HTTPS提供的页面,其中仍通过HTTP加载图片、脚本、样式表或字体。浏览器现在将其分为两类:可升级的资源,主要是图片和媒体,浏览器会在请求前悄悄将其升级为HTTPS;以及可阻止的资源,如脚本和样式表,浏览器会完全拒绝加载。这就是为什么含有混合内容的页面可能只是看起来没有锁形图标,或者可能完全丢失样式地呈现出来。
在WordPress中,常见的来源是主题文件中硬编码的图片URL、通过HTTP加载的外部脚本,以及仍配置为HTTP的CDN。打开浏览器控制台,它会指出问题资源,然后从源头进行修复。我们关于如何修复混合内容的指南详细介绍了诊断方法。
缓存和CDN
切换后请清除您的页面缓存和CDN缓存。一个HTTP页面的缓存副本会继续提供旧的标记内容,让已完成的迁移看起来像是坏掉了。
电子邮件和事务性模板
这一项几乎普遍会被遗漏。WooCommerce订单邮件、密码重置消息、发票模板和新闻通讯页脚经常带有硬编码的HTTP链接,而它们存在于普通搜索和替换所触及不到的表格之外。给自己发一份测试订单和一次测试密码重置,然后检查链接实际指向哪里。
WordPress SSL问题故障排除
| 症状 | 常见原因 | 解决方法 |
|---|---|---|
| 无限重定向循环,ERR_TOO_MANY_REDIRECTS | Cloudflare SSL设置为Flexible。Cloudflare通过HTTP与您的服务器通信,您的服务器重定向到HTTPS,Cloudflare又将其发回 | 将Cloudflare SSL/TLS加密模式设置为Full(strict),并在源站上保持有效证书 |
| 切换后无法进入wp-admin | 只更改了两个URL字段中的一个 | 通过FTP在wp-config.php中设置WP_HOME和WP_SITEURL |
| 只有部分页面没有锁形图标 | 这些页面存在混合内容 | 在浏览器控制台中找到HTTP资源,从源头修复 |
| 网站原本正常,几周后显示”不安全” | Let’s Encrypt证书因续订失败而过期 | 重新发行证书,然后在控制面板中确认自动续订 |
| 浏览器中正常,但应用或支付网关失败 | 证书链中缺少中间证书 | 安装完整的CA证书包,然后用SSL Checker重新检查 |
| www或裸域上出现名称不匹配警告 | 证书只覆盖了两者中的其中一个 | 重新发行覆盖两个名称的证书;仅靠重定向无法修复此问题,警告会在任何重定向执行之前出现 |
如果证书已安装但网站仍报告为不安全,SSL错误指南涵盖了具体的浏览器错误代码。
迁移后:SEO检查清单及预期情况
- 在Google Search Console中添加HTTPS属性。HTTP属性不会报告HTTPS URL的数据。添加新属性并保留旧属性,或使用涵盖两者的域名属性。如果您使用Bing网站管理员工具,也要在那里更新。
- 重新提交您的XML站点地图,使用https URL。
- 检查规范标签是否指向https。大多数SEO插件在网站URL更改后会自动更新,但仍要在页面源代码中确认。
- 更新Google Analytics和Ads的属性设置,以及任何存储您网站URL的第三方服务。
- 更新内部链接中的绝对链接。相对链接不需要任何更改。
之后正常的情况是什么样子,因为这会让从未经历过的人感到担忧:随着Google重新抓取,一段时间内Search Console会将您的展示次数在HTTP和HTTPS属性之间分开显示,排名往往会在稳定之前波动几周。Google将HTTP到HTTPS的迁移视为URL更改的网站迁移,所以出现一些波动是预期之中的,而不是出问题的信号。只要301重定向到位,且每个页面都能正常解析,那就只需要等待,无需其他操作。
有一点值得直白地说明:从HTTPS退回到HTTP几乎从来都不是解决问题的正确方法。这意味着第二次网站迁移,又一轮排名波动,而且浏览器警告会重新出现。如果HTTPS引起了问题,原因几乎总是故障排除表中的某一项,而修复该问题的成本远低于撤销迁移。
常见问题
在设置 > 常规下,将WordPress地址(URL)和站点地址(URL)都更改为https,然后在服务器级别添加301重定向。在Apache上,这是.htaccess文件中以[R=301,L]结尾的重写规则;在Nginx上,是端口80的server块中的一行return 301 https://$host$request_uri;。将FORCE_SSL_ADMIN添加到wp-config.php中以同时覆盖仪表盘。
通常不需要,而这是许多指南尚未跟上的一项变化。自WordPress 5.7起,一旦两个站点URL设置都使用https,WordPress会在页面渲染时重写内容中不安全的URL。对于硬编码在主题文件、序列化插件选项,或页面构建器内容中的URL,仍值得运行搜索和替换,但这是一个清理步骤,而非迁移的必需部分。
如果您的主机已经发行了证书,大约需要五分钟。发行免费证书并运行插件向导需要十到十五分钟。使用付费域名验证证书进行手动安装大约需要三十分钟,而组织验证或扩展验证在您能安装任何东西之前,会增加一到五天的验证时间。之后修复混合内容是可变部分,取决于您有多少内容带有硬编码URL。
不会永久损害,前提是每个HTTP URL都通过301重定向到其HTTPS对应版本。Google将此次迁移视为带有URL更改的网站迁移,因此在重新抓取期间预计会有几周的波动,并预计在此期间展示次数会在您的HTTP和HTTPS Search Console属性之间分开显示。持续性的下降通常可追溯到被遗漏的重定向,而不是HTTPS本身。
大多数情况可归结为三个原因。设置 > 常规中的站点URL仍为http,因此WordPress继续提供HTTP页面。或者页面至少加载了一个通过HTTP传输的资源,这就是混合内容。或者证书安装时没有包含中间证书,导致验证不一致。请先运行SSL Checker,因为它能区分安装问题和内容问题。
要将其他平台迁移到HTTPS,或想了解通用流程?请查看我们关于如何将网站从HTTP切换到HTTPS的指南。

