• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mod_include

    描述:Server-parsed html 文档(服务器端包含)
    状态:Base
    模块标识符:include_module
    源文件:mod_include.c

    摘要

    此模块提供了一个过滤器,它将 process files 发送到 client 之前。处理由特殊格式的 SGML comments 控制,称为元素。这些元素允许条件文本,包含其他 files 或程序,以及环境变量的设置和打印。

    启用 Server-Side 包含

    服务器端包含由INCLUDES过滤实现。如果包含 server-side include 指令的文档的扩展名为.shtml,则以下指令将使 Apache 解析它们并为结果文档指定 mime 类型text/html

    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    

    必须为包含 shtml files 的目录指定以下指令(通常在<Directory>部分中,但如果设置了AllowOverrideOptions,则此指令在.htaccess files 中也有效):

    Options +Includes
    

    为了向后兼容,server-parsed处理器还会激活 INCLUDES 过滤器。同样,Apache 将为 mime 类型为text/x-server-parsed-htmltext/x-server-parsed-html3的任何文档激活 INCLUDES 过滤器(结果输出将具有 mime 类型text/html)。

    有关更多信息,请参阅我们的服务器端包含教程。

    PATH_INFO 与服务器端包含

    _为 server-side 处理的文件包括默认情况下不再接受带有PATH_INFO(尾随路径名信息)的请求。您可以使用中的 AcceptPathInfo指令将服务器配置为接受PATH_INFO的请求。

    可用元素

    该文档被解析为 HTML 文档,其中特殊命令嵌入为 SGML comments。命令具有以下语法:

    <!--#element attribute=value attribute=value ...-->

    value 通常用 double 引号括起来,但单引号(')和反引号(```)也是可能的。许多命令只允许一对 attribute-value 对。请注意,comment 终止符(-->)前面应该有空格,以确保它不被视为 SSI 令牌的一部分。请注意,前导<!--#是一个标记,可能不包含任何空格。

    允许的元素列在以下 table 中:

    元件描述
    评论SSI comment
    配置配置输出格式
    回声打印变量
    EXEC执行外部程序
    FSIZE打印文件的大小
    flastmod打印文件的最后修改 time
    包括包含一个文件
    printenv打印所有可用变量
    设置变量的 value

    SSI 元素可以由mod_include以外的模块定义。实际上,EXEC元素由mod_cgi提供,并且只有在加载此模块时才可用。

    comment 元素

    此命令不输出任何内容。它唯一的用途是在文件中添加 comments。这些 comments 不会打印出来。

    此语法在 version 2.4.21 及更高版本中可用。

    <!--#comment Blah Blah Blah -->

    配置元素

    此命令控制解析的各个方面。有效属性是:

    • echomsg(Apache 2.1 及以后)
      如果 echo 元素尝试回显未定义的变量,则 value 是一条发送回 client 的消息。这会覆盖任何 SSIUndefinedEcho 指令。<!--#config echomsg =“[ Value Undefined]”-->
    • errmsgvalue 是在解析文档时发生错误时发送回 client 的消息。这会覆盖任何 SSIErrorMsg 指令。<!--#config errmsg =“[哎呀,东西坏了。]”-->
    • sizefmt
      value 设置显示文件大小时要使用的格式。有效值是以字节为单位的字节数,或者是适当的以 Kb 或 Mb 为单位的缩写,例如,1024 字节的大小将打印为“1K”。<!--#config sizefmt =“abbrev”-->
    • timefmt
      value 是 strftime(3)library 例程在打印日期时使用的 string。<!--#config timefmt =“”%R,%B%d,%Y“”-->

    回声元素

    此命令打印下面定义的包含变量之一。如果未设置变量,则结果由SSIUndefinedEcho指令确定。打印的任何日期都取决于当前配置的timefmt

    属性:

    • var
      value 是要打印的变量的 name。
    • decoding
      指定 Apache 是否应在进一步处理变量之前从变量中删除编码。默认值为 none,不进行解码。如果设置为 url,则 URL 解码(也称为%-encoding;这适用于链接中的 URL,etc.)将被执行。如果设置为 urlencoded,application/x-www-form-urlencoded 兼容编码(在查询 strings 中找到)将被剥离。如果设置对于 base64,base64 将被解码,如果设置为 entity,将剥离 HTML 实体编码。在对变量进行任何进一步编码之前进行解码。可以通过指定多个逗号分隔编码来剥离多个编码。解码设置在遇到下一个解码属性或元素 ends 之前,它将保持有效。解码属性必须在相应的 var 属性之前才有效。
    • encoding
      指定 Apache 在输出变量之前应如何编码变量中包含的特殊字符。如果设置为 none,则不会进行编码。如果设置为 url,则 URL 编码(也称为%-encoding;这适用于链接中的 URL,etc.)将被执行。如果设置为 urlencoded,则将执行 application/x-www-form-urlencoded 兼容编码,并应与查询 strings 一起使用如果设置为 base64,将执行 base64 编码。在 echo 元素的开头,默认设置为 entity,从而产生实体编码(适用于 block-level HTML 元素的 context,e.g.一段文本这可以通过添加一个编码属性来改变,该属性在遇到下一个编码属性或元素 ends 之前将保持有效,以先到者为准。编码属性必须在相应的 var 属性之前才有效。在 order 中要避免 cross-site 脚本问题,您应该始终对用户提供的数据进行编码.Example <!--#echo encoding =“entity”var =“QUERYSTRING”-->

    exec 元素

    exec命令执行给定的 shell 命令或 CGI 脚本。它需要mod_cgi存在于服务器中。如果设置了选项IncludesNOEXEC,则完全禁用此命令。有效属性是:

    • cgi
      value 指定 CGI 脚本的(%-encoded)URL-path。如果路径不以斜杠开头(/),那么它将被认为是相对于当前文档。此路径引用的文档作为 CGI 脚本调用,即使服务器通常不会识别它。,必须为 CGI 脚本启用包含脚本的目录(使用 ScriptAlias 或 Options ExecCGI)。CGI 脚本从 client 获得原始请求的 PATH_INFO 和查询 string(QUERYSTRING);这些不能在 URL 路径中指定。除了标准 CGI 环境之外,脚本还可以使用包含变量。例如<!--#exec cgi =“/cgi-bin/example.cgi”-->如果脚本返回 Location:标头而不是输出,那么这将被转换为 HTML 锚点。应优先使用 include 虚拟元素 to exec cgi。特别是,如果你需要使用查询 string 将额外的 arguments 传递给 CGI 程序,这不能用 exec cgi 完成,但可以用 include virtual 完成,如下所示:<!--#include virtual =“/cgi-bin/example.cgi?argument=value”-->
    • cmd
      服务器将使用/bin/sh 执行给定的 string。除了通常的 CGI 变量集之外,命令还可以使用包含变量。#include virtual 的使用几乎总是优先使用#exec cgi 或#exec cmd。前者(#include virtual)使用标准的 Apache sub-request 机制来包含 files 或脚本。它的测试和维护要好得多。此外,在某些平台(如 Win32)和使用 suexec 的 unix 上,您无法将 arguments 传递给 exec 指令中的命令,或者在命令中包含空格。因此,虽然以下内容将在 unix 上的 non-suexec configuration 下工作,但它不会在 Win32 下产生所需的结果,或者 running suexec:<!--#exec cmd =“perl /path/to/perlscript arg1 arg2”-->

    fsize 元素

    此命令打印指定文件的大小,具体取决于sizefmt格式规范。属性:

    • file
      value 是相对于包含要解析的当前文档的目录的路径。该文件是<!--#fsize file =“mod_include.html”-->字节。文件的 value 不能以斜杠开头(/),也不能包含../,以便引用当前目录上方或文档根目录之外的文件。尝试这样会导致错误消息:给定路径在上面根路径。
    • virtual
      value 是一个(%-encoded)URL-path。如果它不是以斜杠开头(/)那么它被认为是相对于当前文档。注意,这不会打印任何 CGI 输出的大小,而是 CGI 脚本本身的大小。

    This file is <!--#fsize virtual="/docs/mod/mod_include.html"--> bytes.

    请注意,在许多情况下,这两者完全相同。但是,file属性不尊重 URL-space 别名。

    flastmod 元素

    此命令打印指定文件的最后修改 date,具体取决于timefmt格式规范。属性与FSIZE命令的属性相同。

    包含元素

    此命令将另一个文档或文件的文本插入到已解析的文件中。任何包含的文件都受通常的访问控制。如果包含已解析文件的目录设置为选项IncludesNOEXEC,则仅包含文本MIME-type(text/plaintext/html etc.)的文档。否则,将使用命令中给出的完整 URL(包括任何查询 string)正常调用 CGI 脚本。

    属性定义文档的位置,并且可以在 include 元素中出现多次;对依赖于 include 命令的每个属性进行包含。有效属性是:

    • file
      value 是相对于包含要解析的当前文档的目录的路径。它不能包含../,也不能是绝对路径。因此,您不能包含文档根目录之外的 files,也不能包含目录结构中当前文档之上的 files。应始终优先使用虚拟属性。
    • 虚拟
      value 是一个(%-encoded)URL-path。 URL 不能包含 scheme 或主机名,只能包含路径和可选查询 string。如果它不以斜杠开头(/)那么它被认为是相对于当前文档。一个 URL 是从属性构造的,如果 client 访问了 URL,服务器将返回的输出包括在解析中因此包含 files 可以嵌套。如果指定的 URL 是 CGI 程序,程序将被执行并且其输出被插入代替解析文件中的指令。您可以在 CGI url 中包含查询 string:<!--#include virtual =“/cgi-bin/example.cgi?argument=value”--> include virtual 应优先于 exec cgi 使用,以将 CGI 程序的输出包含到 HTML 文档中。如果 KeptBodySize 指令已正确配置并对此包含文件有效,则尝试将 POST 请求发送到封闭的 HTML 文档将传递给子请求作为 POST 请求。如果没有该指令,所有子请求都将作为 GET 请求处理。
    • onerror
      value 是一个(%-encoded)URL-path,如果先前尝试包含文件或虚拟属性失败,则显示该值。要生效,必须在覆盖文件或虚拟属性后指定此属性。如果尝试包含 onerror 路径失败,或者未指定 onerror,则将包含默认错误消息。#Simple example <!--#include virtual =“/not-exist.html”onerror =“/error.html”-->#Dedicated onerror paths <!--#include virtual =“/path-a.html”onerror =“/error-a.html”virtual =“/path-b.html”onerror =“/error-b.html”-->

    printenv 元素

    这将打印出所有现有变量及其值的纯文本列表。特殊字符在输出之前是实体编码的(有关详细信息,请参阅回声元素)。没有属性。

    <pre><!--#printenv --></pre>

    设置元素

    这设置了变量的 value。属性:

    • var
      要设置的变量的 name。
    • value
      value 给出一个变量。
    • decoding
      指定 Apache 是否应在进一步处理变量之前从变量中删除编码。默认值为 none,不进行解码。如果设置为 url,urlencoded,base64 或实体,则将分别执行 URL 解码,application/x-www-form-urlencoded 解码,base64 解码或 HTML 实体解码。可以通过用逗号分隔来指定多个解码。解码设置将一直有效,直到遇到下一个解码属性或元素 ends 为止。解码属性必须在相应的 var 属性之前才有效。
    • encoding指定 Apache 在设置变量之前应如何编码变量中包含的特殊字符。默认值为 none,不进行编码。如果设置为 url,则 urlencoding,base64 或 entity,URL 编码,application/x-www-form-urlencoded 编码,base64 编码或 HTML 实体编码将分别执行。可以通过逗号分隔来指定多个编码。编码设置将保持有效,直到遇到下一个编码属性或元素 ends。 encoding 属性必须在相应的 var 属性之前才有效。在剥离所有解码后应用编码。

    <!--#set var="category" value="help"-->

    包括变量

    除了标准 CGI 环境中的变量之外,这些变量还可用于echo命令,ifelif以及文档调用的任何程序。

    • DATE_GMT
      Greenwich 中的当前日期意味着 Time。
    • DATE_LOCAL
      本地 time zone 中的当前 date。
    • DOCUMENT_ARGS
      此变量包含 active SSI 文档的查询 string,如果未包含查询 string,则为空 string。对于通过 include SSI 指令调用的子请求,QUERYSTRING 将表示子请求的查询 string,DOCUMENT_ARGS 将表示 SSI 文档的查询 string。(在 Apache HTTP Server 2.4.19 和 later.)中可用
    • DOCUMENT_NAME
      用户请求的文档的文件名(不包括目录)。
    • DOCUMENT_PATH_INFO
      尾随路径名信息。有关 PATH_INFO 的更多信息,请参阅指令 AcceptPathInfo。
    • DOCUMENT_URI
      用户请求的文档的(%-decoded)URL 路径。请注意,对于嵌套的包含 files,这不是当前文档的 URL。另请注意,如果在内部修改 URL(e.g.通过别名或 directoryindex),则会显示修改后的 URL。
    • LAST_MODIFIED
      用户请求的文档的最后修改 date。
    • QUERY_STRING_UNESCAPED
      如果 active SSI 文档的请求中存在查询 string,则此变量包含(%-decoded)查询 string,该查询 string 将被转义以供 shell 使用(特殊字符,如&等,前面有反斜杠)。如果查询 string 不存在,则不会设置它。如果不需要 shell 转义,请使用 DOCUMENT_ARGS。
    • USER_NAME
      文件所有者的用户 name。

    可变替代

    在大多数情况下,变量替换是在引用的 strings 内完成的,它们可能合理地作为 SSI 指令的参数出现。这包括configexecflastmodfsizeincludeechoset指令。如果SSILegacyExprParser设置为on,则在条件操作符的 arguments 中也会发生替换。您可以使用反斜杠引号将 string 美元符号插入 string:

    <!--#set var="cur" value="\$test"-->

    如果一个变量 reference 需要在一个字符序列的中间被替换,否则它本身可能被认为是一个有效的标识符,它可以通过将 reference 括在大括号中来消除歧义,一个 la shell 替换:

    <!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}"-->

    如果REMOTE_HOST是“X”且REQUEST_METHOD是“Y”,这将导致Zed变量设置为“X_Y”。

    流量控制元素

    基本的流量控制元素是:

    <!--#if expr="test_condition"--><!--#elif expr="test_condition"--><!--#else --><!--#endif -->

    if元素的作用类似于编程语言中的 if 语句。评估测试条件,如果结果是 true,则直到下一个elifelseendif元素的文本包含在输出流中。

    如果原始 test_condition 是 false,elifelse statements 用于将文本放入输出流。这些元素是可选的。

    endif元素_end if元素并且是必需的。

    test_condition 是一个 boolean 表达式,它遵循ap_expr语法。可以使用SSILegacyExprParser将语法更改为与 Apache HTTPD 2.2.x 兼容。

    使用var元素设置的 SSI 变量将导出到请求环境中,并可使用reqenv function 访问。作为 short-cut,function name v也可以在mod_include中使用。

    如果 client IP 地址属于 10.0.0.0/8 子网,则下面的 example 将打印“from local net”。

    <!--#if expr='-R "10.0.0.0/8"'--> from local net <!--#else --> from somewhere else <!--#endif -->

    如果变量foo设置为 value“bar”,则下面的 example 将打印“foo is bar”。

    <!--#if expr='v("foo")="bar"'--> foo is bar <!--#endif -->

    参考文献

    另请参阅:Apache HTTP Server 中的表达式,以获取完整的 reference 和示例。限制功能在mod_include内不可用

    Legacy 表达式语法

    如果SSILegacyExprParser设置为on,本节将介绍#if expr元素的语法。

    • string
      true 如果 string 不为空
    • -A stringtrue 如果 string 表示的 URL 可由 configuration 访问,否则返回 false。如果要向未授权查看 URL 的用户隐藏页面上的内容(例如指向该 URL 的链接),这将非常有用。请注意,仅测试 URL 是否授予访问权限,而不是 URL 是否存在。 Example <!--#if expr =“-A /private”-->单击<a href="/private"> here </a>以访问私人信息。<!--#万一-->
    • string1 = string2 string1 == string2 string1 != string2
      比较 string1 和 string2。如果 string2 的格式为/string2/,那么它将被视为正则表达式。正则表达式由 PCRE 引擎实现,并且具有与 perl 5 中相同的语法。请注意,==只是=的别名,并且行为完全相同。如果匹配正数(=或==),则可以捕获正则表达式的分组部分。捕获的部分存储在特殊变量$1 ..$9 中。正则表达式匹配的整个 string 存储在特殊变量$0 Example 中<!--#if expr =“$QUERYSTRING =/^ sid =([a-zA-Z0-9])/”--><!--#set var =“ session”value =“$1”--><!--#万一-->
    • string1 < string2 string1 <= string2 string1 > string2 string1 >= string2
      将 string1 与 string2 进行比较。注意,strings 按字面比较(使用 strcmp(3))。因此 string“100”小于“20”。
    • (test_condition)
      true 如果 test_condition 是 true
    • ! test_condition
      true 如果 test_condition 是 false
    • test_condition1 && test_condition2
      true 如果 test_condition1 和 test_condition2 都是 true
    • test_condition1 || test_condition2
      true 如果 test_condition1 或 test_condition2 是 true

    =”和“!=”绑定比“&&”和“||”更紧密。“!”绑定最紧密。因此,以下是等价的:

    <!--#if expr="$a = test1 &&$b = test2"--><!--#if expr="($a = test1)&&($b = test2)"-->

    boolean operators &&||共享相同的优先级。因此,如果您想更紧密地绑定这样的 operator,您应该使用括号。

    任何未被识别为变量或 operator 的东西都被视为 string。 Strings 也可以引用:'string'。不带引号的 strings 不能包含空格(空格和制表符),因为它用于分隔变量等标记。如果连续找到多个 strings,则使用空格连接它们。所以,

    string1 string2结果string1 string2

    'string1 string2'导致string1 string2

    Boolean 表达式的优化

    如果表达式变得更复杂并且显着减慢了处理速度,您可以尝试根据 evaluation 规则对它们进行优化:

    • 表达式从左到右进行评估
    • 二进制 boolean operators(&&||)尽可能短路。总结上述规则意味着,mod_include首先评估左表达式。如果左侧结果足以确定最终结果,则处理在此处停止。否则,它会评估右侧并计算左右结果的最终结果。
    • 短路 evaluation 被关闭为 long,因为有正则表达式要处理。必须对这些进行求值以填充反向引用变量($1..$9)。

    如果要查看特定表达式的处理方式,可以使用-DDEBUG_INCLUDE编译器选项重新编译mod_include。这将插入每个已解析的表达式标记生成器信息,解析树以及如何将其计算到发送到 client 的输出中。

    在正则表达式 strings 中转义斜杠

    必须转义所有不用作正则表达式中的分隔符的斜杠。这与正则表达式引擎无关。

    SSIEndTag 指令

    描述:String 表示包含元素
    句法:SSIEndTag tag
    默认:SSIEndTag "-->"
    Context:server config,virtual host
    状态:Base
    模块:mod_include

    该指令更改mod_include查找的 string 以标记 include 元素的结尾。

    SSIEndTag "%>"
    

    参见

    • SSIStartTag

    SSIErrorMsg 指令

    描述:出现 SSI 错误时显示错误消息
    句法:SSIErrorMsg message
    默认:SSIErrorMsg "[an error occurred while processing this directive]"
    Context:server config,virtual host,directory,.htaccess
    覆盖:所有
    状态:Base
    模块:mod_include

    SSIErrorMsg指令更改mod_include遇到错误时显示的错误消息。对于 production 服务器,您可以考虑将默认错误消息更改为"<!-- Error -->",以便不向用户显示消息。

    该指令与<!--#config errmsg=message -->元素具有相同的效果。

    SSIErrorMsg "<!-- Error -->"
    

    SSIETag 指令

    描述:控制是否由服务器生成 ETag。
    句法:SSIETag on\|off
    默认:SSIETag off
    Context:目录,.htaccess
    状态:Base
    模块:mod_include
    兼容性:可在 version 2.2.15 及更高版本中使用。

    在正常情况下,由mod_include过滤的文件可能包含动态生成的元素,或者可能独立于原始文件而更改的元素。因此,默认情况下,要求服务器不要通过向请求注释添加no-etag来为响应生成ETag标头。

    SSIETag指令禁止此行为,并允许服务器生成ETag标头。这可用于启用输出的缓存。请注意,后端服务器或动态内容 generator 可能会生成自己的 ETag,忽略no-etag,并且无论此设置的 value 如何,此 ETag 都将由mod_include传递。SSIETag可以采用以下值:

    • off
      no-etag 将被添加到请求备注中,并要求服务器不生成 ETag。如果服务器忽略了 no-etag 的 value 并且无论如何都会生成 ETag,那么 ETag 将得到尊重。
    • on
      现有的 ETag 将得到尊重,服务器生成的 ETag 将在响应中传递。

    SSILastModified 指令

    描述:控制是否由服务器生成Last-Modified headers。
    句法:SSILastModified on\|off
    默认:SSILastModified off
    Context:目录,.htaccess
    状态:Base
    模块:mod_include
    兼容性:可在 version 2.2.15 及更高版本中使用。

    在正常情况下,由mod_include过滤的文件可能包含动态生成的元素,或者可能独立于原始文件而更改的元素。因此,默认情况下会从响应中删除Last-Modified标头。

    SSILastModified指令会覆盖此行为,并允许在已存在的情况下遵循Last-Modified标头,或者如果标头尚未存在则设置。这可用于启用输出的缓存。SSILastModified可以采用以下值:

    • off
      除非 XBitHack 指令设置为 full,否则 Last-Modified 标头将从响应中删除,如下所述。
    • on
      如果已存在于响应中,则将遵循 Last-Modified 标头,如果响应是文件且标头丢失,则会将其添加到响应中。 SSILastModified 指令优先于 XBitHack。

    SSILegacyExprParser 指令

    描述:为条件表达式启用兼容模式。
    句法:SSILegacyExprParser on\|off
    默认:SSILegacyExprParser off
    Context:目录,.htaccess
    状态:Base
    模块:mod_include
    兼容性:可在 version 2.3.13 及更高版本中使用。

    从 version 2.3.13 开始,mod_include已切换到#if流控制元素中条件表达式的新ap_expr语法。该指令允许切换到与 Apache HTTPD version 2.2.x 及更早版本兼容的旧语法。

    SSIStartTag 指令

    描述:String 启动一个 include 元素
    句法:SSIStartTag tag
    默认:SSIStartTag "<!--#"
    Context:server config,virtual host
    状态:Base
    模块:mod_include

    该指令更改mod_include查找的 string 以将 include 元素标记为 process。

    如果有 2 个服务器解析文件的输出,每个服务器处理不同的命令(可能在不同的时间),则可能需要使用此选项。

    SSIStartTag "<%"
    SSIEndTag   "%>"
    

    上面给出的 example(也指定了匹配的SSIEndTag)将允许您使用 SSI 指令,如下面的 example 所示:

    带有备用开始和结束标记的 SSI 指令

    <%printenv %>

    参见

    • SSIEndTag

    SSITimeFormat 指令

    描述:配置 date strings 显示的格式
    句法:SSITimeFormat formatstring
    默认:SSITimeFormat "%A,%d-%b-%Y %H:%M:%S %Z"
    Context:server config,virtual host,directory,.htaccess
    覆盖:所有
    状态:Base
    模块:mod_include

    此指令更改回显DATE环境变量时 date strings 显示的格式。 formatstring 与 C 标准 library 中的strftime(3)相同。

    该指令与<!--#config timefmt=formatstring -->元素具有相同的效果。

    SSITimeFormat "%R, %B %d, %Y"
    

    上述指令将导致时间以“22:26,2002 年 6 月 14 日”的格式显示。

    SSIUndefinedEcho 指令

    描述:当回显未设置的变量时显示 String
    句法:SSIUndefinedEcho string
    默认:SSIUndefinedEcho "(none)"
    Context:server config,virtual host,directory,.htaccess
    覆盖:所有
    状态:Base
    模块:mod_include

    当没有设置变量并且“回显”时,该指令更改mod_include显示的 string。

    SSIUndefinedEcho "<!-- undef -->"
    

    XBitHack 指令

    描述:在 files 中解析 SSI 指令并设置执行位
    句法:XBitHack on\|off\|full
    默认:XBitHack off
    Context:server config,virtual host,directory,.htaccess
    覆盖:选项
    状态:Base
    模块:mod_include

    XBitHack指令控制普通 html 文档的解析。该指令仅影响与MIME-typetext/html关联的 files。XBitHack可以采用以下值:

    • off
      没有特殊处理可执行文件 files。
    • on
      任何设置了 user-execute 位的 text/html 文件都将被视为 server-parsed html 文档。
    • full
      至于还要测试 group-execute 位。如果已设置,则将返回文件的 Last-modified date 设置为文件的最后修改 time。如果未设置,则不发送 last-modified date。设置此位允许 clients 和代理缓存请求的结果。注意您不希望使用完整选项,除非您确保为每个 SSI 脚本取消设置 group-execute 位,这可能#include CGI 或者在每次命中时产生不同的输出(或者可能在后续请求中发生更改)。当 SSILastModified 设置为 on 时,SSILastModified 指令优先于 XBitHack 指令。

    上篇:mod_imagemap

    下篇:mod_info