项目

通用

个人资料

操作

服务器端包含

模块:mod_ssi

描述

SSI 是一种非常古老且廉价的服务器端动态生成内容的方式。

强烈不建议使用此模块
  • SSI 脚本的执行在服务器核心中完成
  • 长时间运行的 SSI 脚本会阻塞所有连接的处理
  • 一旦你使用 #exec,性能会比直接使用 CGI 脚本更差
  • lighttpd mod_ssi 并未完全实现许多 SSI 指令,例如 #include virtual="...", 它只包含文件内容,而不包含其他处理器的输出
你应该仅出于以下两个原因使用 SSI
  • 仅用于文件包含的内容组装 (#include) (而非通过 CGI 或其他处理器执行文件)
  • 遗留应用程序

建议使用 mod_magnet 作为 mod_ssi 简单页面构建的更强大替代方案。
对于任何 CPU 密集型或数据库支持的页面构建,建议使用单独的后端脚本 (以 CGI, FastCGI, SCGI 等方式运行)。

安装

您必须加载 mod_ssi 模块并设置 ssi.extension

server.modules = ( ..., "mod_ssi", ... ) #Note that if you use mod_compress mod_ssi must come first to function.

选项

ssi.extension

应通过 mod_ssi 解释的文件扩展名列表。

示例

ssi.extension = ( ".shtml" )

ssi.content-type

通过 mod_ssi 提供服务的页面的内容类型。
默认值:text/html

ssi.conditional-requests

启用/禁用条件请求处理并生成 ETag 和 Last-Modified 响应头。
除非已知 SSI 请求生成可缓存文档,否则不应启用此项。只包含其他静态文件内容和/或使用生成可预测输出的 SSI 命令的 SSI 页面可能是可缓存的。
默认值:禁用

ssi.exec

启用/禁用 #exec cmd="..." 执行。(lighttpd mod_ssi 未实现 #exec cgi="...")
默认值:启用

ssi.recursion-max (自 1.4.44 起)

默认值:0 (禁用)
设置 #include virtual="..." SSI 处理的最大递归深度。默认值 0 保留了简单包含文件的现有行为。

可用元素

 <!--#echo var="..." -->
 <!--#echo var="DOCUMENT_ROOT"-->
 <!--#include file="..." -->
 <!--#include virtual="..." -->
 <!--#flastmod file="..." -->
 <!--#flastmod virtual="..." -->
 <!--#fsize file="..." -->
 <!--#fsize virtual="..." -->
 <!--#config timefmt="..." sizefmt="(bytes|abbrev)" -->
 <!--#printenv -->
 <!--#set var="..." value="..." -->
 <!--#if expr="..." -->
 <!--#elif expr="..." -->
 <!--#else -->
 <!--#endif -->
 <!--#exec cmd="..." -->
 <!--#exec cmd="date"-->

表达式处理

每个 "expr" 都被解释为
  • 逻辑运算符:&&, ||, !
  • 比较运算符:==, <, <=, >, >=, !=
  • 优先级:(, )
  • 带引号的字符串:'string with a literal dollar: $FOO'
  • 变量替换:$REMOTE_ADDR
  • 无引号字符串:string

流程控制

if, elif, else 和 endif 只能用于在特定条件下插入内容。

不支持的功能 (未实现)

来自 NCSA 和 Apache 的原始 SSI 模块提供了此模块因各种原因不支持的更多选项
  • config.errmsg
  • echo.encoding

90年代的简要笔记或如何启用 https://de.wikipedia.org/wiki/SSI (服务器端指令)

  • 您需要在 lighttpd.conf 中设置变量 `ssi.extension = (".html")`。
    (这里我们表示每个 `.html` 文件都可以包含 `` 或其他 SSI 指令。包含的文件的文件类型扩展名不重要!)
  • 致敬90年代

gstrauss 3年多前更新 · 28 次修订