如何在 cPanel 托管环境中正确开启 SSI(Server Side Includes)——2025 年最新实战指南

在 2025 年的今天,很多新手站长都以为 SSI(Server Side Includes)已经过时了,被 PHP include、Edge Side Includes(ESI)或者现代前端框架彻底取代。但事实并非如此! SSI 仍然是静态网站、HTML 模板化、轻量级页头页尾统一管理的最佳方案之一,尤其适合:

  • 纯 HTML 静态网站(Hugo、Jekyll 生成的也可以)
  • 不想为简单包含功能开启 PHP 的低成本共享主机
  • 需要在 CDN 边缘缓存完整页面的场景(Cloudflare Cache Everything + SSI 完美配合)
  • 企业官网、文档站、Landing Page 等对性能要求极高的站点

本文将手把手教你如何在 cPanel 环境中彻底、永久、正确地开启 SSI,涵盖 Apache、LiteSpeed、CloudPanel 三种主流 Web Server 的最新配置方法,避免 99% 的网友踩过的坑。

一、SSI 到底是什么?为什么 2025 年还值得用?

SSI 是 Apache 在 1990 年代就支持的服务器端包含指令,最常用的语法:

html
<!--#include file="header.html" -->
<!--#include virtual="/includes/footer.html" -->
<!--#echo var="DATE_LOCAL" -->
<!--#config timefmt="%Y-%m-%d" --> <!--#echo var="LAST_MODIFIED" -->

优点:

  • 极轻量:不占用 PHP 进程、不触发 PHP-FPM
  • 完美支持全站 CDN 静态缓存(Cloudflare、Quic.cloud 都原生支持 SSI)
  • 修改一次 header/footer,全站立即生效
  • 支持条件判断、变量、执行简单 CGI

二、cPanel 默认为什么关闭 SSI?怎么安全开启?

cPanel 为了安全和性能,默认在共享主机环境禁用了 SSI 的执行功能,主要通过以下三层限制:

  1. Apache 的 Options Includes 被禁用
  2. AddHandler server-parsed .html 被移除
  3. mod_include 模块可能被编译时禁用(极少数主机商)

方法一:在 cPanel → “MultiPHP INI Editor” 直接开启(2025 年最简单、最推荐)

从 cPanel v108 版本开始(2023 年已全部推送),官方新增了一个隐藏但超级好用的开关:

  1. 登录 cPanel
  2. 搜索并进入 “MultiPHP INI Editor”
  3. 切换到 “Editor Mode” 标签
  4. 找到你的域名,选择对应的 PHP 版本(哪怕你不用 PHP 也必须选一个)
  5. 在最下方手动加入以下两行:
ini
action  application/x-httpd-ssi  "/cgi-bin/ssi"
allow SSI for .html .htm .shtml

不对!这不是 PHP 配置!很多教程在这里误导你。

正确做法(2025 年最新):

cPanel 在 v114+ 版本(目前几乎所有主机都已经更新)新增了独立开关:

  1. cPanel 首页搜索 “Server Side Includes” 或直接进入 Security → Server Side Includes(新功能!)
  2. 选择需要开启 SSI 的域名
  3. 勾选 “Enable Server Side Includes (SSI)” → Save

只需要 3 秒,cPanel 会自动在该域名对应的 VirtualHost 里加入:

apache
<Directory "/home/username/public_html">
    Options +Includes
    AddType text/html .shtml .html .htm
    AddOutputFilter INCLUDES .shtml .html .htm
</Directory>

这就是最干净、最安全的开启方式,推荐优先级第一!

方法二:通过 .htaccess 手动开启(适用于所有 cPanel)

如果你的主机商还没推送最新版 cPanel,或者你用的是子目录,可以用经典的 .htaccess 方法:

在网站根目录(public_html)创建或编辑 .htaccess:

apache
# 开启 SSI(推荐写法,兼容 Apache 2.4 + LiteSpeed + OpenLiteSpeed)
Options +Includes
AddType text/html .html .htm
AddOutputFilter INCLUDES .html .htm

# 如果你仍然想保留 .shtml 传统后缀(兼容性最好)
AddType application/x-httpd-ssi .shtml
AddHandler server-parsed .shtml

重要提醒(2025 年坑):

  • 很多廉价主机商在 Apache 配置里加了 AllowOverride Options=... 但禁用了 Includes,强制 .htaccess 无法开启。这种情况下只能联系主机商在 VirtualHost 层面开启。
  • LiteSpeed 企业版完全兼容以上写法,但社区版(免费版)需要额外在 LSWS 面板里打开 “Enable Server Side Include” 开关。

方法三:让主机商在 VirtualHost 里永久开启(终极稳定方案)

如果你是 VPS 或独立 cPanel 服务器管理员,在 /usr/local/apache/conf/userdata/std/2/username/example.com/ssi.conf 创建:

apache
<Directory "/home/username/public_html">
    Options +IncludesNOEXEC +Includes
    AddOutputFilter INCLUDES .html .htm .shtml
    AddType text/html .html .htm .shtml
</Directory>

然后执行:

bash
/scripts/ensure_vhost_include --user=username
/usr/local/cpanel/bin/apache_conf_distiller --update
/usr/local/cpanel/bin/build_apache_conf

重启 Apache 或 LiteSpeed 即可永久生效,不会被 cPanel 更新覆盖。

三、测试 SSI 是否真的生效(三分钟验证法)

  1. 在 public_html 创建 test.html:
html
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"></head>
<body>
    <h1>SSI 测试页面</h1>
    当前时间:<!--#echo var="DATE_LOCAL" -->
    文档最后修改时间:<!--#config timefmt="%Y-%m-%d %H:%M" --> <!--#echo var="LAST_MODIFIED" -->
    <hr>
    <!--#include virtual="/ssi-header.html" -->
    <!--#include file="footer.html" -->
</body>
</html>
  1. 创建 ssi-header.html 和 footer.html(注意权限 644)
  2. 浏览器访问 https://yourdomain.com/test.html 如果看到时间和包含的内容 → 成功!

如果看到原始注释代码 → SSI 没开。

四、2025 年最佳实践与性能优化技巧

  1. 文件后缀推荐使用 .html 而不是 .shtml 现代配置已完全支持 .html 执行 SSI,不影响 SEO 和缓存。
  2. 与 Cloudflare Cache Everything 完美配合 开启 Page Rules: yourdomain.com/* Cache Level: Cache Everything Edge Cache TTL: 一个月 Cloudflare 会自动识别并执行 SSI,速度飞快!
  3. 使用 而不是 file= virtual 支持绝对路径,更可靠。
  4. 安全加固(防止 SSI 注入) 在 .htaccess 加入:
apache
# 禁止执行外部命令(最重要!)
Options +IncludesNOEXEC -ExecCGI

# 禁止包含外部网站文件
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^.*$ - [F]
</IfModule>

五、常见问题与终极解决方案

Q:开启后网站出现 500 Internal Server Error? A:99% 是 .htaccess 语法错误或主机禁用了 Includes。把 Options 那一行暂时注释掉测试。

Q:只想在某个子目录开启 SSI? A:在子目录放独立的 .htaccess,内容同上即可。

Q:配合 WordPress 使用 SSI? A:可以!在主题目录放 header-ssi.html,然后在 header.php 里用 echo ''; 但更推荐直接用 WordPress 的 get_header()。

六、结语

SSI 绝不是过时的技术,它在 2025 年依然是轻量、高性能、易维护的黄金解决方案。 通过本文的三种方法,你现在可以在任何 cPanel 环境中 100% 成功开启 SSI:

  • 最快:cPanel 内置开关(3 秒)
  • 最通用:.htaccess 方法
  • 最稳定:VirtualHost 永久配置

IDC.NET 专注 cPanel 与高性能建站 13 年。如果你开启 SSI 后还有任何问题(比如配合 LSCache、Nginx + cPanel、CloudPanel 等特殊环境),欢迎留言你的具体环境和错误现象。

THE END