让 PrestaShop 商店启用 HTTPS 分三步:在服务器上安装 SSL 证书,在店铺参数中打开两个设置项,然后重定向旧的 HTTP 流量。中间这一步最容易让人出错,因为 PrestaShop 有两个 SSL 设置项而不是一个,第二个在第一个保存之前一直处于锁定状态。
快速答案:在服务器上已配置好可用证书的情况下,打开店铺参数 > 常规,点击检查商店是否支持 HTTPS 的链接,将启用 SSL设为“是”,然后将在所有页面启用 SSL设为“是”,滚动到页面底部并点击保存。如果第二个开关是灰色不可用状态,说明第一个开关还没有保存。
SSL(Secure Sockets Layer 的缩写,尽管现在发行的证书全部使用TLS)正是让商店地址栏出现锁形图标、支付网关得以运作的关键。如果你想先了解背景知识,请阅读什么是 SSL 证书。以下步骤适用于PrestaShop 8和PrestaShop 9。
哪种方法适合你的 PrestaShop 环境
| 你的环境 | 如何获取证书 | 大致耗时 |
|---|---|---|
| 带有 AutoSSL 的托管主机或 cPanel 主机 | 在面板中签发免费证书,然后在 PrestaShop 中启用 SSL | 10 分钟 |
| 自有 VPS,没有主机面板 | 使用 Certbot 获取 Let’s Encrypt 证书 | 20 分钟 |
| 付费证书(OV、EV 或通配符) | 生成 CSR,手动安装 | 30 分钟加上验证时间 |
| 商店前端使用 Cloudflare | 在源服务器上安装证书,Cloudflare 设为 Full (strict) | 15 分钟 |
开始之前请先备份商店和数据库。如果是正在运营的商店,请在非高峰时段操作:结账功能每中断一分钟,都意味着可能丢失一笔订单。
PrestaShop 商店应该使用哪种 SSL 证书?
免费证书的加密效果与付费证书完全相同,对于小型商店来说,免费证书往往就是正确的选择。PrestaShop SSL 证书之间的差异在于证书颁发机构在签发证书前进行了哪些验证,以及出现问题时有哪些保障措施。
| 类型 | CA 检查的内容 | 签发时间 | 适合场景 |
|---|---|---|---|
| 域名验证 (DV) | 确认你拥有该域名的控制权 | 数分钟 | 小型商店,使用托管支付页面的商店 |
| 组织验证 (OV) | 域名以及你注册的公司信息 | 1 至 3 个工作日 | 成熟商店、B2B 场景,以及买家需要核实付款对象的场合 |
| 扩展验证 (EV) | 对公司进行全面的法律和运营审核 | 1 至 3 个工作日 | 订单金额较高、金融行业,以及直接处理银行卡数据的商店 |
电商网站在免费证书与付费证书的选择上,与博客网站的考量方式不同。付费证书附带保修,如果证书本身出现问题会赔偿相应损失,还附带可以在结账页面展示的站点信任标志。免费证书没有这两项,而且只提供域名验证级别的认证,无法证明商店的运营者身份。
还有两点是 PrestaShop 特有的。如果你在多个子域名上运行多店铺,一张通配符证书就能一次性覆盖所有子域名,而不必为每个商店单独申请证书。无论选择哪种证书,HTTPS 在这里都不是可选项:支付网关不会处理通过普通 HTTP 传输的实时交易,而且 PCI DSS 要求在任何传输银行卡数据的页面上使用强加密(实际上就是 TLS 1.2 或更高版本)。如果你不确定应该选择哪种类型,SSL 向导可以帮你缩小选择范围。
将证书安装到服务器上
PrestaShop 本身不安装证书。这一步要先在服务器上完成,而且在你能够通过 HTTPS 访问后台之前,PrestaShop 甚至不会显示启用 SSL开关。
- 通过主机面板。 查找 SSL/TLS、Let’s Encrypt 或 AutoSSL 选项。在 cPanel 中,该选项位于安全栏目下。请同时为主域名和 www 版本签发证书。
- 在 VPS 上。 使用Certbot,它可以通过命令行签发证书,并自动设置续期定时任务。
- 付费证书。 使用我们的CSR 生成器或CSR 指南生成 CSR,完成验证后,安装证书、私钥和中间证书。在 cPanel 中,该操作位于SSL/TLS > Manage SSL sites,详见cPanel 安装指南。其他平台的安装方法请参见SSL 安装指南。
Let’s Encrypt 证书有效期为90 天,并会在到期前约 30 天自动续期。当这个自动化流程失效时,商店会持续运行数周,然后毫无预警地变为不安全状态,而这往往正好发生在销售旺季。请确认自动续期功能已开启,并在预期的首次续期日期之后,使用SSL 检测工具检查证书状态。
有一个陷阱在商店场景下比在其他任何场景下都更重要:如果安装证书时没有附带中间证书,浏览器仍会显示锁形图标,因为桌面浏览器会缓存之前在别处见过的中间证书。但你的支付网关不会。一个看起来正常运行、却在支付回调环节失败的商店,往往就是证书链不完整造成的。
如何在 PrestaShop 中启用 SSL
PrestaShop 有两个SSL 设置项,而不是一个,操作顺序很关键:
- 启用 SSL只保护结账页面和账户页面。这是 PrestaShop 早期的默认做法,源于当时商店大部分页面通过 HTTP 提供服务,只对敏感页面进行加密。
- 在所有页面启用 SSL会保护整个商店。这个选项在启用 SSL被打开并保存之前一直处于灰色不可用状态。
你需要同时启用这两项。完整操作步骤如下:
- 在后台打开店铺参数 > 常规。 针对 PrestaShop 1.6 编写的教程会将其称为偏好设置 > 常规;该菜单在 1.7 版本中被重命名,但设置项本身是相同的。
- 点击“请点击此处检查您的商店是否支持 HTTPS”链接。 该链接会通过 HTTPS 重新加载后台。只有当你正在通过普通 HTTP 查看后台时,PrestaShop 才会显示这个链接,所以如果你已经通过 HTTPS 管理商店,就不会看到它,可以直接进行下一步。
- 将启用 SSL 设为“是”。
- 将在所有页面启用 SSL 设为“是”。
- 滚动到页面底部。
- 点击保存。 不点击保存,任何设置都不会生效。

以上说明适用于PrestaShop 8和PrestaShop 9。截至 2026 年 6 月,当前版本为 9.1.4 和 8.2.7。PrestaShop 1.7 的操作方式相同,但其维护已在 PrestaShop 9.0 于 2025 年 6 月发布时终止,因此不再接收安全补丁,升级应列入你的待办事项。1.6 版本使用的是旧版菜单名称。
为什么启用 SSL 开关是灰色不可用状态
这是最常见的 PrestaShop SSL 问题。在做其他任何操作之前,先确认你遇到的具体是这两种症状中的哪一种。
如果启用 SSL选项根本没有出现在页面上,说明你正在通过普通 HTTP 查看后台。PrestaShop 只在安全连接下显示该开关,所以在 http:// 后台中,你看到的会是 HTTPS 检测链接而不是开关。通过点击该链接或直接输入地址,用 https:// 地址访问后台,开关就会出现。
如果在所有页面启用 SSL选项可见但呈灰色不可用状态,请按顺序排查以下三个原因。
1. 你还没有保存
这是迄今为止最常见的原因。你打开了启用 SSL,然后查看在所有页面启用 SSL,发现它仍是灰色不可用状态,于是以为出了故障。其实没有:第二个设置只有在第一个设置被保存之后才会解锁。滚动到页面底部,点击保存,页面重新加载后第二个开关就会激活。PrestaShop 自己的问题追踪系统中就有一条标题为“Enabling Https/ssl is quite confusing”(启用 Https/ssl 相当令人困惑)的记录,所以如果你也被这一点卡住,绝不是只有你一个人。
2. HTTPS 检测失败
如果后台完全无法通过 HTTPS 加载,或者加载时浏览器发出警告,问题出在证书本身,而不是 PrestaShop。常见原因包括:证书尚未安装、证书覆盖的是 www 而你正在访问主域名(或反过来),或者证书安装时没有附带中间证书。使用SSL 检测工具针对你商店网址中的确切域名进行检测,修复检测结果中报告的问题后再返回后台。
3. 直接在数据库中设置
如果已经确认证书工作正常,但开关仍然无法切换,两个设置项都存储在ps_configuration表中,可以直接设置。在 phpMyAdmin 或任何 SQL 客户端中执行:
UPDATE ps_configuration SET value = 1 WHERE name = 'PS_SSL_ENABLED';
UPDATE ps_configuration SET value = 1 WHERE name = 'PS_SSL_ENABLED_EVERYWHERE';
如果你的表前缀不是默认的ps_,请相应调整,然后清除缓存。要撤销这一操作(例如因为证书出错导致你被锁在自己的后台之外),只需将同样的两条语句中的 1 改为 0 再执行一次。
在 PrestaShop 中将 HTTP 重定向到 HTTPS
在两个设置都保存之后,PrestaShop 已经会对前台页面的 HTTP 请求返回 301 重定向到对应的 HTTPS 地址,因此旧链接和已被搜索引擎收录的网址不会失效。不过它只处理真正到达 PrestaShop 的请求。直接从磁盘提供的文件,例如图片、PDF 以及位于/img/或/upload/目录下的任何内容,不会被重定向,POST 请求同样不会被重定向。在服务器层级设置规则可以覆盖所有这些情况,而且这种重定向不需要每次都启动 PHP。
在你修改任何内容之前,请先阅读这段说明。 PrestaShop 会自动生成.htaccess文件,保存店铺参数 > 流量与 SEO > SEO 与网址会重写这个文件。它不会清空整个文件。PrestaShop 只会替换两个标记注释# ~~start~~和# ~~end~~之间的内容块,并保留位于它们上方或下方的任何内容——这一点标记行本身就已经说明了。所以只要把你的规则放在这个内容块之外,它们就能在每次重新生成时保留下来。粘贴在这个内容块内部的任何内容,在你下次保存该页面时都会消失。
在 Apache 上,将以下内容添加到商店根目录下的.htaccess文件中,放在# ~~start~~这一行之上:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
条件必须写成off,意思是“当请求尚未使用安全连接时进行重定向”。R=301标记使这个重定向成为永久重定向;如果没有它,你得到的将是临时重定向,这种重定向不会告诉搜索引擎网址已经迁移。
在 Nginx 上没有.htaccess文件,需要改为编辑服务器配置块:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
使用nginx -t测试配置,然后使用systemctl reload nginx重新加载。
修复切换后遗留的问题
清除 PrestaShop 缓存。 首先完成这一步。被缓存的前台页面会继续提供包含 HTTP 标记的内容,让一次原本已经完成的切换看起来像是出了故障。如果你使用了 CDN,也要一并清除其缓存。
修复混合内容问题。 一个通过 HTTPS 提供的页面,如果仍通过 HTTP 加载图片、脚本或样式表,就属于混合内容。浏览器会悄悄升级部分资源(主要是图片和媒体文件),但会直接拒绝加载其他资源,这就是为什么受影响的页面可能会出现样式丢失的情况。在 PrestaShop 中,常见的混合内容来源包括 CMS 页面中硬编码的网址、模块配置,以及从别处粘贴过来的产品描述。浏览器控制台会指出具体的问题文件。我们关于如何修复混合内容的指南对诊断过程有详细说明。
重新生成站点地图,使其列出 https 网址,并检查是否还有模块在向邮件或发票中写入 http 链接。
排查 PrestaShop SSL 问题
| 症状 | 原因 | 解决方法 |
|---|---|---|
| 启用 SSL 后出现无限重定向循环 | Cloudflare 加密模式设为 Flexible,导致它向源服务器发送 HTTP 请求,而源服务器又将其重定向到 HTTPS | 将 Cloudflare 设为Full (strict),并确保源服务器上有有效证书 |
| 被锁定在后台之外 | 证书损坏或缺失时启用了 SSL | 将ps_configuration中的两个键都设为 0,修复证书后再重试 |
| 只有产品页面缺少锁形图标 | 混合内容,通常是产品图片或某个模块的资源文件 | 在浏览器控制台中查找 HTTP 资源 |
| 商店在几周后变为不安全状态 | Let’s Encrypt 证书因续期出错而过期 | 重新签发证书,然后确认自动续期功能已开启。参见中间证书过期 |
| 浏览器正常,但结账或支付回调失败 | 证书链不完整 | 安装完整的 CA 证书包,再用 SSL 检测工具重新检测 |
| www 或主域名出现名称不匹配 | 证书只覆盖了两者中的一个名称 | 重新签发覆盖两者的证书。参见通用名称无效 |
如果证书已安装但商店仍显示为不安全,SSL 错误指南可以帮助你处理具体的浏览器错误代码。
切换之后:SEO 检查清单
- 在 Google Search Console 中添加 HTTPS 资源。 HTTP 资源不会报告 HTTPS 网址的数据。添加新的资源,或者使用可同时覆盖两者的域名资源。
- 重新提交站点地图,使用 https 网址。
- 检查规范标签是否在所有产品页面和分类页面中都指向 https 地址。
- 更新 Merchant Center 数据源、分析工具以及任何存储你商店网址的市场平台集成。 含有 http 链接的产品数据源是一个常被忽略的问题。
预计会出现一些波动。Google 会将从 HTTP 切换到 HTTPS 视为网址发生变化的站点迁移,因此在一段时间内,展示次数会分散到你的两个 Search Console 资源中,排名也会在几周内出现波动。只要每个网址都能正常访问,并且 301 重定向已经设置到位,就不需要额外处理。
一旦 HTTPS 稳定运行一段时间后,可以考虑启用HSTS,它会告诉浏览器拒绝以普通 HTTP 方式访问你的域名。一开始先不要启用预加载指令,因为该设置一旦启用,撤销起来会很慢。
常见问题
先在服务器上安装证书,然后在后台打开店铺参数 > 常规,点击检查商店是否支持 HTTPS 的链接,将启用 SSL设为“是”,将在所有页面启用 SSL设为“是”,并在页面底部点击保存。PrestaShop 本身不签发证书。
首先确认开关是灰色不可用状态还是完全没有显示。如果启用 SSL没有出现,说明你正在通过普通 HTTP 查看后台,而 PrestaShop 只在安全连接下显示该开关,所以请通过 https:// 地址重新加载后台。如果在所有页面启用 SSL呈灰色不可用状态,按可能性从高到低排列,有三个原因。你还没有滚动到底部并保存,所以第二个设置还没有解锁。或者 PrestaShop 的 HTTPS 检测失败,因为证书缺失、没有覆盖你正在使用的域名,或者安装时没有附带中间证书。或者设置卡住了,这种情况下你可以直接在ps_configuration表中将PS_SSL_ENABLED和PS_SSL_ENABLED_EVERYWHERE设为 1。
启用 SSL只保护结账页面和客户账户页面,这是商店其他部分都通过 HTTP 提供服务时的标准做法。在所有页面启用 SSL会保护整个商店。第二个选项在第一个被启用并保存之前无法使用。在任何现代商店中,你都应该同时启用这两项。
在后台的店铺参数 > 常规中。针对 PrestaShop 1.6 编写的旧教程将同一个界面称为偏好设置 > 常规,因为该菜单在 1.7 版本中被重命名了。
在店铺参数 > 常规中将两个开关都设回“否”并保存。如果损坏的证书已将你锁在后台之外,请执行上文所示的两条ps_configuration语句,将其中的 1 改为 0,然后清除缓存。关闭 SSL 只是修复证书期间的临时措施,并不是最终解决方案:没有 HTTPS,支付网关是无法正常工作的。
严格来说不需要。免费的域名验证证书在加密结账流程方面与付费证书效果完全相同,也能满足支付网关的要求。付费证书额外提供的是:证书出现问题时的赔偿保修,用于结账页面的站点信任标志,通过 OV 或 EV 验证并写入证书的公司信息,以及在你跨子域名运行多店铺时更便捷的通配符覆盖。
适用于 PrestaShop 8 和 PrestaShop 9,截至 2026 年 6 月,当前版本为 9.1.4 和 8.2.7。PrestaShop 1.7 在同一位置使用相同的设置项,但自 PrestaShop 9.0 于 2025 年 6 月发布后,1.7 版本已不再获得维护。PrestaShop 1.6 将该界面称为“偏好设置 > 常规”,而不是“店铺参数 > 常规”。
正在将其他平台迁移到 HTTPS,或者想了解通用的操作流程?请参阅我们关于如何将网站从 HTTP 切换到 HTTPS的指南。

