跳到主要内容

服务器端包含:允许在 HTML 中使用 SSI

SSI(服务器端包含)指令让您可以在 HTML 页面中添加动态生成的内容,而无需使用 CGI 程序或其他动态技术来服务整个页面。默认情况下,.html 文件不会运行服务器端包含,但 .shtml 文件会。要允许在 HTML 中使用 SSI,您需要为 HTML 添加一个新的处理程序。


  • SSI 处理程序
  • SSI 格式说明
  • 总结

SSI 处理程序

要允许 SSI,将 Apache 处理程序设置为 'server-parsed',并将扩展名设置为 '.html'(不带引号)。这将告诉服务器读取 .html 文件,以便您可以在其中使用这些命令。
注意: 请遵循以下规则:

  • 命令和参数均为小写字母
  • 值周围的双引号是必需的
  • 命令与参数之间不得有空格
  • 井号(#)是必需的
  • 第二个双引号后面,在第二个双连字符(结尾处)前有一个空格

以下是 SSI 的格式:

<!--#include file="included.html" -->

上述格式将创建一个 SSI,包含文件 "included.html" 中的文本。

SSI 格式说明

当包含的文件与调用它的文件位于同一目录时,使用 "file="。当文件位于调用文件所在目录的子目录中时,也可以使用 file 参数。
如果调用的文件位置需要从服务器根目录开始的地址,则使用 "virtual=" 参数。这意味着文件不在调用它的页面的同一目录中。
通常,会设置一个 "includes" 目录来存放所有包含文件。这是一种常见做法。如果是这样,您将使用 virtual 参数将 SSI 命令附加到这些文件上。只需确保给命令提供从服务器根目录(域名)开始的路径。示例如下:

<!--#include virtual="/directory/included.html" -->

第一个目录前的斜杠代表域名(该域的服务器根目录)。
/home#/username/public_html/ 是您主站点的服务器根目录(其中 username 是您的 cPanel 用户名)。
/home#/username/public_html/addondomain/ 是您附加域的服务器根目录。

说明: 这里的 “#” 是占位符,代表数字,您需要根据实际情况替换为 /home/、/home1/、/home2/ 等。

如果您有一个文件位于 /home#/username/public_html/addondomain/includes/includedfile.html,想要包含在 http://www.addondomain.com/index.html 中,则 index.html 文件中的 SSI 格式如下:

<!--#include virtual="/includes/includedfile.html" -->

通过使用前导斜杠,服务器会自动在地址前添加域名。
经验法则:当包含文件与调用页面在同一目录时,使用 "file=";当不在同一目录时,使用 "virtual="。
注意: 您需要根据账户所在的主目录,将 /home#/ 调整为 /home/、/home1/、/home2/ 或其他数字。要查看账户的主目录,只需在 cPanel 主页面的统计栏中查看主目录信息。

其他说明:

默认情况下,服务器上已有一个 Apache 处理程序 用于解析包含 服务器端包含SSI)的 .shtml 文件。
请在 .htaccess 文件中添加以下代码,以便在普通 HTML 文件中运行 .shtml 包含:

AddHandler server-parsed .html  

注意:DNS 传播到 Bluehost 名称服务器 之前,SSI 不会 正常工作。您无法通过类似 http://204.130.255.7/~username/test.shtml 的格式提前测试。

总结

SSI(服务器端包含)允许您在 HTML 页面中添加动态生成的内容,而无需使用 CGI 程序或其他技术。请注意,默认情况下,.html 文件不会运行服务器端包含。了解如何在 Apache 中允许 HTML 使用 SSI。