操作
服务器端包含¶
- 目录
- 服务器端包含
模块:mod_ssi
描述¶
SSI 是一种非常古老且廉价的服务器端动态生成内容的方式。
强烈不建议使用此模块- SSI 脚本的执行在服务器核心中完成
- 长时间运行的 SSI 脚本会阻塞所有连接的处理
- 一旦你使用 #exec,性能会比直接使用 CGI 脚本更差
- lighttpd mod_ssi 并未完全实现许多 SSI 指令,例如 #include virtual="...", 它只包含文件内容,而不包含其他处理器的输出
- 仅用于文件包含的内容组装 (#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年代