服务器端包含(SSI)语法介绍

发布时间:2019-07-30 16:06:31 阅读:63
服务器端包含(SSI)是一种用于动态生成HTML页的脚本语言,该脚本在页面传递到客户端之前在服务器上运行,并且通常涉及将一个文件插入另一个文件。可以创建一个HTML导航菜单,并使用SSI动态将其添加到网站上的所有页面。

使用方法

SSI最常见的用法是将一个或多个文件的内容包含在网页服务器的页面上。比如将导航包含在主页内:

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

如果后期修改了nav.html,主页的导航也会随之改变。

服务器支持

Apache、LiteSpeed、nginx、lighttpd与IIS五大主流网页服务器软件均支持此种语言。

SSI不仅可以包含html页面,还可以输出变量、当前系统时间等等。

为了让网页服务器辨识启用了服务器端内嵌的HTML文件,从而运行这段代码。则文件名应有特殊的扩展名,默认为.shtml.stm.shtm;或者服务器设置文件的执行标记以配置为允许服务器端内嵌。

SSI语法

指令 参数 描述 举例
include file或virtual 此指令可能是最常用的SSI指令,允许其中一个文档中的内容被包含在另外一个文档内。file或virtual参数指定被包含的文件( HTML 页面、文本文件、脚本等)。包含了其他文件中的内容或是运行 CGI 脚本的结果。若进程没有权限阅读文件或执行脚本,文件包含将会失败。“virtual”参数指定相对于域根的目标,而“file”参数则指定相对于当前文件目录的路径。当使用“file”参数时,禁止引用绝对路径。除非被明确配置,对更高级目录(..)的访问通常是被禁止的。Apache文档相对“file”参数更推荐使用“virtual”参数。 <!--#include virtual="menu.cgi" -->

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

Apache的SSI教程规定格式为在闭合元素的“-->”之前留出空格。

exec cgi或cmd 此指令运行服务器上的程序、脚本亦或是Shell命令。“cmd”参数特指服务端的命令;“cgi”参数特指 CGI脚本的路径。当前SSI脚本的PATH_INFO和QUERY_STRING均会传递到CGI脚本中,结果应运行“exec cgi”而非“include virtual”。 <!--#exec cgi="/cgi-bin/foo.cgi" -->

<!--#exec cmd="ls -l" -->
echo var 此指令将显示特定 HTTP 环境变量的内容。这些变量包括HTTP_USER_AGENT、LAST_MODIFIED和HTTP_ACCEPT。 <!--#echo var="REMOTE_ADDR" -->
config timefmt、sizefmt或errmsg 此指令配置日期、时间、文件大小和错误信息(SSI命令执行失败的时候反馈)的显示格式。 <!--#config timefmt="%y %m %d" -->

<!--#config sizefmt="bytes" -->

<!--#config errmsg="SSI命令运行失败!" -->
flastmod或fsize file或virtual 这些指令显示特定文档最近一次被修改的时间,或者是特定文档的大小。“file”或“virtual”参数指明所使用的文档。“file”参数将文档定义为相对于文档路径;“virtual”参数将文档定义为相对于文档根目录。 <!--#flastmod virtual="index.html" -->

<!--#fsize file="script.pl" -->
printenv   此指令输出所有的变量和它们的值,这些变量包含环境变量和用户定义变量。它没有任何属性。 <!--#printenv -->

SSI控制指令

指令 参数 描述 举例
if expr 用于进行一个物理页面可能会生成的多个逻辑页面的条件测试。 <!--#if expr="${Sec_Nav}" -->
<!--#include virtual="" -->
<!--#endif -->
elif expr 与编程语言中的进一步条件测试具有相同用途。 <!--#if expr="${Sec_Nav}" -->
<!--#include virtual="secondary_nav.txt" -->
<!--#elif expr="${Pri_Nav}" -->
<!--#include virtual="primary_nav.txt" -->
<!--#endif -->
else 如果没有if和elif指令捕捉到现在的情况,这里的事情就会发生。 <!--#if expr="${Sec_Nav}" -->
<!--#include virtual="secondary_nav.txt" -->
<!--#else -->
<!--#include virtual="article.txt" -->
<!--#endif -->
endif 参见上方例子。
set var、value 设定SSI变量的值。(虽然同时出现在Apache httpd和lighttpd中,但不是所有的软件都支持此指令。) <!--#set var="foo" value="bar" -->

我们在微信上24小时期待你的声音
解答:网站优化,网站建设,搜索引擎优化,APP 开发,小程序开发

非常感谢您有耐心的读完这篇文章:"服务器端包含(SSI)语法介绍",此文章仅为提供更多信息供用户参考使用或为学习交流的方便。如果对您有帮助,请收藏我们的网址:https://www.91webs.cn


18617670560