Apache HTTP 服务器版本 2.4
描述 | 自动生成目录索引,类似于 Unix 的 ls 命令或 Win32 的 dir shell 命令 |
---|---|
状态 | 基础 |
模块标识符 | autoindex_module |
源文件 | mod_autoindex.c |
目录索引可以来自以下两种来源之一
index.html
。 DirectoryIndex
指令设置要使用的文件名称。 这是由 mod_dir
控制的。AddIcon
、AddIconByEncoding
和 AddIconByType
用于设置用于显示各种文件类型的图标列表; 对于列出的每个文件,将显示与该文件匹配的第一个列出的图标。 这些由 mod_autoindex
控制。这两个功能是分开的,这样您就可以完全删除(或替换)自动索引生成,如果您需要的话。
使用 Options +Indexes
启用自动索引生成。 有关更多详细信息,请参见 Options
指令。
如果 IndexOptions
指令中给出了 FancyIndexing
选项,则列标题将是控制显示顺序的链接。 如果您选择一个标题链接,则列表将重新生成,并按该列中的值排序。 反复选择相同的标题将在升序和降序之间切换。 这些列标题链接通过 IndexOptions
指令的 SuppressColumnSorting
选项来抑制。
请注意,当按“大小”排序显示时,使用的是文件的实际大小,而不是显示的值 - 因此,一个 1010 字节的文件将始终显示在 1011 字节的文件之前(如果按升序排列),即使它们都显示为“1K”。
可以使用各种查询字符串参数来让客户端控制目录列表的排序方式以及列出哪些文件。 如果您不希望让客户端进行此控制,则 IndexOptions IgnoreClient
选项将禁用该功能。
列排序标题本身是自引用超链接,它们添加了下面显示的排序查询选项。 以下任何选项都可以添加到对目录资源的任何请求中。
C=N
按文件名对目录进行排序C=M
按最后修改日期,然后按文件名对目录进行排序C=S
按大小,然后按文件名对目录进行排序C=D
按描述,然后按文件名对目录进行排序O=A
按升序对列表进行排序O=D
按降序对列表进行排序F=0
将列表格式化为简单列表(不是 FancyIndexed)F=1
将列表格式化为 FancyIndexed 列表F=2
将列表格式化为 HTMLTable FancyIndexed 列表V=0
禁用版本排序V=1
启用版本排序P=pattern
仅列出与给定 pattern 匹配的文件请注意,'P'attern 查询参数是在处理完通常的 IndexIgnore
指令之后进行测试的,并且所有文件名仍然受制于与任何其他自动索引列表相同的标准。 mod_autoindex
中的查询参数解析器在遇到无法识别的选项时会立即停止。 查询参数必须根据上表中的格式正确。
以下简单示例说明了这些查询选项,可以将其剪切并保存在 header.html 文件中。 请注意,未知的“X”参数(用于提交按钮)位于最后,以确保在 mod_autoindex
遇到 X=Go 输入之前解析所有参数。
<form action="" method="get"> Show me a <select name="F"> <option value="0"> Plain list</option> <option value="1" selected="selected"> Fancy list</option> <option value="2"> Table list</option> </select> Sorted by <select name="C"> <option value="N" selected="selected"> Name</option> <option value="M"> Date Modified</option> <option value="S"> Size</option> <option value="D"> Description</option> </select> <select name="O"> <option value="A" selected="selected"> Ascending</option> <option value="D"> Descending</option> </select> <select name="V"> <option value="0" selected="selected"> in Normal order</option> <option value="1"> in Version order</option> </select> Matching <input type="text" name="P" value="*" /> <input type="submit" name="X" value="Go" /> </form>
描述 | 用于显示文件的替代文本,而不是按文件名选择的图标 |
---|---|
语法 | AddAlt string file [file] ... |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
AddAlt
为文件提供替代文本,而不是图标,用于 FancyIndexing
。 File 是文件扩展名、部分文件名、通配符表达式或要描述的文件的完整文件名。 如果 String 包含任何空格,则必须将其用引号("
或 '
)括起来。 如果客户端无法显示图像、已禁用图像加载或无法检索图标,则会显示此替代文本。
AddAlt "PDF file" *.pdf AddAlt Compressed *.gz *.zip *.Z
描述 | 用于显示文件的替代文本,而不是按 MIME 编码选择的图标 |
---|---|
语法 | AddAltByEncoding string MIME-encoding [MIME-encoding] ... |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
AddAltByEncoding
为文件提供替代文本,而不是图标,用于 FancyIndexing
。 MIME-encoding 是有效的内容编码,例如 x-compress
。 如果 String 包含任何空格,则必须将其用引号("
或 '
)括起来。 如果客户端无法显示图像、已禁用图像加载或无法检索图标,则会显示此替代文本。
AddAltByEncoding gzip x-gzip
描述 | 用于显示文件的替代文本,而不是按 MIME 内容类型选择的图标 |
---|---|
语法 | AddAltByType string MIME-type [MIME-type] ... |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
AddAltByType
设置用于显示文件的替代文本,而不是图标,用于 FancyIndexing
。 MIME-type 是有效的 content-type,例如 text/html
。 如果 String 包含任何空格,则必须将其用引号("
或 '
)括起来。 如果客户端无法显示图像、已禁用图像加载或无法检索图标,则会显示此替代文本。
AddAltByType 'plain text' text/plain
描述 | 用于显示文件的描述 |
---|---|
语法 | AddDescription string file [file] ... |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
这将设置用于显示文件的描述,用于 FancyIndexing
。 File 是文件扩展名、部分文件名、通配符表达式或要描述的文件的完整文件名。 String 用双引号("
)括起来。
AddDescription "The planet Mars" mars.gif AddDescription "My friend Marshall" friends/mars.gif
典型的默认描述字段宽度为 23 字节。 IndexOptions SuppressIcon
选项会添加 6 个字节,IndexOptions SuppressSize
选项会添加 7 个字节,IndexOptions SuppressLastModified
选项会添加 19 个字节。 因此,描述列分配的最大默认宽度为 55 字节。
由于 File 参数可能是部分文件名,请记住,过短的部分文件名可能会匹配意外的文件。 例如,le.html
将匹配文件 le.html
,但也将匹配文件 example.html
。 如果可能存在歧义,请使用尽可能完整的文件名,但请记住,将使用遇到的第一个匹配项,并相应地排序您的 AddDescription
指令列表。
有关覆盖此列的大小或允许无限长度的描述的详细信息,请参见 DescriptionWidth IndexOptions
关键字。
使用 AddDescription
定义的描述性文本可能包含 HTML 标记,例如标签和字符实体。 如果描述列的宽度恰好截断了一个标记元素(例如,切断了粗体短语的结尾),则结果可能会影响目录列表的其余部分。
目前不支持绝对路径,并且在运行时不会匹配任何内容。 包含相对路径信息的参数通常仅在 htaccess 上下文中使用,会隐式地以 '*/' 为前缀,以避免匹配部分目录名称。
描述 | 用于显示按名称选择的文件的图标 |
---|---|
语法 | AddIcon icon name [name] ... |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
这将设置用于显示在以 name 结尾的文件旁边的图标,用于 FancyIndexing
。 Icon 是指向图标的(%-转义)相对 URL、完全限定的远程 URL,或格式为 (alttext,url)
的格式,其中 alttext 是为非图形浏览器提供的图标的文本标签。
Name 可以是 ^^DIRECTORY^^
(表示目录)、^^BLANKICON^^
(表示空行,用于正确格式化列表)、文件扩展名、通配符表达式、部分文件名或完整文件名。
^^BLANKICON^^
仅用于格式化,因此如果您使用 IndexOptions HTMLTable
,则无需使用它。
#Examples AddIcon (IMG,/icons/image.png) .gif .jpg .png AddIcon /icons/dir.png ^^DIRECTORY^^ AddIcon /icons/backup.png *~
尽可能使用 AddIconByType
代替 AddIcon
。
描述 | 在 MIME 内容编码选定的文件旁边显示的图标 |
---|---|
语法 | AddIconByEncoding icon MIME-encoding [MIME-encoding] ... |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
这将设置在使用 FancyIndexing
的文件旁边显示的图标。 Icon 可以是图标的(%转义)相对 URL、完全限定的远程 URL,或者格式为 (alttext,url)
,其中 alttext 是为非图形浏览器提供的图标的文本标签。
MIME-encoding 是有效的 content-encoding,例如 x-compress
。
AddIconByEncoding /icons/compress.png x-compress
描述 | 在 MIME 内容类型选定的文件旁边显示的图标 |
---|---|
语法 | AddIconByType icon MIME-type [MIME-type] ... |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
这将设置在使用 FancyIndexing
的类型为 MIME-type 的文件旁边显示的图标。 Icon 可以是图标的(%转义)相对 URL、完全限定的远程 URL,或者格式为 (alttext,url)
,其中 alttext 是为非图形浏览器提供的图标的文本标签。
MIME-type 是匹配所需 mime 类型的通配符表达式。
AddIconByType (IMG,/icons/image.png) image/*
描述 | 在没有配置特定图标时显示的文件图标 |
---|---|
语法 | DefaultIcon url-path |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
指令设置在没有已知特定图标时显示的文件图标,用于 DefaultIcon
FancyIndexing
。 Url-path 是图标的(%转义)相对 URL 或完全限定的远程 URL。
DefaultIcon /icon/unknown.png
描述 | 将插入索引列表顶部的文件名称 |
---|---|
语法 | HeaderName filename |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
指令设置将插入索引列表顶部的文件的名称。 Filename 是要包含的文件的名称。HeaderName
HeaderName HEADER.html
HeaderName 和
现在将 Filename 视为相对于用于访问正在索引的目录的 URI 路径。如果 Filename 以斜杠开头,它将被视为相对于 ReadmeName
。DocumentRoot
HeaderName /include/HEADER.html
Filename 必须解析为主要内容类型为 text/*
(例如,text/html
、text/plain
等)的文档。这意味着 filename 可以引用 CGI 脚本,如果脚本的实际文件类型(与其输出相反)被标记为 text/html
,例如使用以下指令:
AddType text/html .cgi
如果 Options
MultiViews
生效,将执行 内容协商。如果 filename 解析为静态 text/html
文档(不是 CGI 脚本)并且启用了 options
Includes
或 IncludesNOEXEC
之一,则该文件将被处理以进行服务器端包含(请参阅
文档)。mod_include
如果由
指定的文件包含 HTML 文档的开头(<html>、<head> 等),那么您可能需要设置 HeaderName
IndexOptions +SuppressHTMLPreamble
,以便不会重复这些标签。
描述 | 在索引页面的 HEAD 部分插入文本。 |
---|---|
语法 | IndexHeadInsert "markup ..." |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
指令指定要在为索引页面生成的 HTML 的 <head> 部分中插入的字符串。IndexHeadInsert
IndexHeadInsert "<link rel=\"sitemap\" href=\"/sitemap.html\">"
描述 | 添加到列出目录时要隐藏的文件列表中 |
---|---|
语法 | IndexIgnore file [file] ... |
默认 | IndexIgnore "." |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
指令添加到列出目录时要隐藏的文件列表中。 File 是 shell 风格的通配符表达式或完整文件名。多个 IndexIgnore 指令会添加到列表中,而不是替换被忽略文件的列表。默认情况下,该列表包含 IndexIgnore
.
(当前目录)。
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
此指令目前在具有正则表达式参数的配置部分(例如
)中不起作用。<DirectoryMatch>
描述 | 清空列出目录时要隐藏的文件列表 |
---|---|
语法 | IndexIgnoreReset ON|OFF |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
兼容性 | 2.3.10 及更高版本 |
指令会删除由 IndexIgnoreReset
忽略的任何文件,否则这些文件将从其他配置部分继承。IndexIgnore
<Directory "/var/www"> IndexIgnore *.bak .??* *~ *# HEADER* README* RCS CVS *,v *,t </Directory> <Directory "/var/www/backups"> IndexIgnoreReset ON IndexIgnore .??* *# HEADER* README* RCS CVS *,v *,t </Directory>
查看默认配置以获取您可能希望在使用此指令后显式忽略的模式列表。
描述 | 目录索引的各种配置设置 |
---|---|
语法 | IndexOptions [+|-]option [[+|-]option] ... |
默认 | 默认情况下,没有启用任何选项。 |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
指令指定目录索引的行为。 Option 可以是以下之一:IndexOptions
IndexOptions HTMLTable
生效且定义了 IndexStyleSheet
时,将向目录列表表的每一行添加一个额外的 CSS 类声明。与通常应用于表格每一行的标准 even
和 odd
类不同,将使用 even-ALT
或 odd-ALT
类,其中 ALT 是与文件样式关联的标准 alt 文本(例如,snd、txt、img 等)或由各种 AddAlt*
指令之一定义的 alt 文本。Charset
关键字允许您指定生成的页面的字符集。默认情况下,Windows 和 Mac OS X 上为 UTF-8
,其他地方为 ISO-8859-1
。(这取决于底层文件系统是否使用 Unicode 文件名。)IndexOptions Charset=UTF-8
DescriptionWidth
关键字允许您指定描述列的宽度(以字符为单位)。-DescriptionWidth
(或未设置)允许 mod_autoindex
计算最佳宽度。DescriptionWidth=n
将列宽固定为 n 字节宽。DescriptionWidth=*
将列扩展到容纳最长描述字符串所需的宽度。**请参阅有关 AddDescription
的部分,了解截断描述固有的危险。**FoldersFirst
,则子目录 Zed
将列在子目录 Beta
之前,子目录 Beta
将列在普通文件 Gamma
和 Alpha
之前。**此选项仅在也启用了 FancyIndexing
时才有效。**FancyIndexing
一起为精美目录列表构建一个简单的表格。对于启用 utf-8 的平台或文件名或描述文本在从左到右和从右到左的阅读顺序之间交替时,这是必需的。IconWidth
一起使用)将导致服务器在文件图标的 img
标签中包含 height
和 width
属性。这允许浏览器在所有图像加载之前预先计算页面布局。如果未为该选项指定任何值,则默认为与 Apache httpd 软件一起提供的图标的标准高度。**此选项仅在也启用了 FancyIndexing
时才有效。**IconHeight
一起使用)将导致服务器在文件图标的 img
标签中包含 height
和 width
属性。这允许浏览器在所有图像加载之前预先计算页面布局。如果未为该选项指定任何值,则默认为与 Apache httpd 软件一起提供的图标的标准宽度。IgnoreCase
,则文件 Zeta 将列在文件 alfa 之后(注意:文件 GAMMA 将始终列在文件 gamma 之前)。mod_autoindex
忽略来自客户端的所有查询变量,包括排序顺序(意味着 SuppressColumnSorting
)。NameWidth
关键字允许您指定文件名列的宽度(以字节为单位)。-NameWidth
(或未设置)允许 mod_autoindex
计算最佳宽度,但仅限于 20 字节宽。NameWidth=n
将列宽固定为 n 字节宽。NameWidth=*
将列扩展到必要的宽度。AddDescription
给出的描述,则 httpd 将读取该文档以获取 title
元素的值。这会占用 CPU 和磁盘资源。HTTP_UNAUTHORIZED
或 HTTP_FORBIDDEN
IndexOptions IgnoreClient
控制。AddDescription
。另请参见 DescriptionWidth
索引选项以限制描述列的大小。**此选项仅在 FancyIndexing
也启用的情况下才有效。**HeaderName
指令指定的特定文件,则该模块通常会在标准 HTML 前言(<html>
、<head>
等)之后包含该文件的内容。SuppressHTMLPreamble
选项禁用此行为,导致模块从头文件内容开始显示。在这种情况下,头文件必须包含适当的 HTML 指令。如果没有头文件,则会像往常一样生成前言。如果您还指定了 ReadmeName
,并且该文件存在,则还将从输出中省略结束的 </body></html> 标记,假设您可能会将这些结束标记放在该文件中。SuppressIcon
和 SuppressRules
结合使用将产生正确的 HTML 3.2 输出,根据最终规范,禁止 img
和 hr
元素出现在 pre
块(用于格式化 FancyIndexed 列表)中。FancyIndexing
也启用的情况下才有效。**hr
元素)。将 SuppressIcon
和 SuppressRules
结合使用将产生正确的 HTML 3.2 输出,根据最终规范,禁止 img
和 hr
元素出现在 pre
块(用于格式化 FancyIndexed 列表)中。**此选项仅在 FancyIndexing
也启用的情况下才有效。**FancyIndexing
也启用的情况下才有效。**Last-Modified
和 ETag
值。它仅在操作系统和文件系统返回适当的 stat() 结果时才有效。一些 Unix 系统这样做,OS2 的 JFS 和 Win32 的 NTFS 卷也是如此。例如,OS2 和 Win32 FAT 卷则没有。启用此功能后,客户端或代理可以在执行 HEAD
请求时跟踪文件列表的更改。请注意,一些操作系统会正确跟踪新文件和已删除文件,但不会跟踪目录中文件的大小或日期更改。**对现有文件的大小或日期戳的更改不会更新所有 Unix 平台上的 Last-Modified
标头。**如果这是个问题,请禁用此选项。Type
关键字允许您指定生成的页面的 MIME 内容类型。默认值为 text/html。IndexOptions Type=text/plain
Last Modified
字段的日期格式在 2.4.0 中意外地从 "%d-%b-%Y %H:%M"
更改为 "%Y-%m-%d %H:%M"
。设置此选项将恢复 2.2 及更早版本的日期格式。VersionSort
关键字会导致包含版本号的文件以自然的方式排序。字符串按通常方式排序,但名称和描述中数字的子字符串根据其数值进行比较。foo-1.7
foo-1.7.2
foo-1.7.12
foo-1.8.2
foo-1.8.2a
foo-1.12
如果数字以零开头,则它被认为是分数
foo-1.001
foo-1.002
foo-1.030
foo-1.04
XHTML
关键字强制 mod_autoindex
发射 XHTML 1.0 代码而不是 HTML 3.2 代码。**此选项仅在 FancyIndexing
也启用的情况下才有效。**注意多个 IndexOptions
的处理方式。
IndexOptions
指令合并在一起。结果是<Directory "/foo"> IndexOptions HTMLTable IndexOptions SuppressColumnsorting </Directory>
将等效于
IndexOptions HTMLTable SuppressColumnsorting
+
或 -
)。每当遇到以 +
或 -
为前缀的关键字时,它都会应用于当前的 IndexOptions
设置(这些设置可能已从上级目录继承)。但是,每当处理一个没有前缀的关键字时,它都会清除所有继承的选项和到目前为止遇到的任何增量设置。考虑以下示例
IndexOptions +ScanHTMLTitles -IconsAreLinks FancyIndexing IndexOptions +SuppressSize
净效果等效于 IndexOptions FancyIndexing +SuppressSize
,因为没有前缀的 FancyIndexing
在它之前丢弃了增量关键字,但允许它们在之后开始再次累积。
要无条件地设置特定目录的 IndexOptions
,清除继承的设置,请指定没有任何 +
或 -
前缀的关键字。
描述 | 设置目录索引的默认排序 |
---|---|
语法 | IndexOrderDefault Ascending|Descending Name|Date|Size|Description |
默认 | IndexOrderDefault Ascending Name |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
IndexOrderDefault
指令与 FancyIndexing
索引选项结合使用。默认情况下,花式索引的目录列表按文件名升序显示;IndexOrderDefault
允许您更改此初始显示顺序。
IndexOrderDefault
接受两个参数。第一个必须是 Ascending
或 Descending
,表示排序的方向。第二个参数必须是 Name
、Date
、Size
或 Description
中的某个关键字,并标识主键。次要键始终是升序文件名。
如果需要,您还可以通过添加 SuppressColumnSorting
索引选项来阻止客户端重新排序列表,以从列顶部删除排序链接,以及 IgnoreClient
索引选项以阻止他们手动将排序选项添加到查询字符串以覆盖您的排序偏好。
描述 | 将 CSS 样式表添加到目录索引 |
---|---|
语法 | IndexStyleSheet url-path |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
IndexStyleSheet
指令设置将用作索引列表 CSS 的文件的名称。
IndexStyleSheet "/css/style.css"
将此指令与 IndexOptions HTMLTable
结合使用会在生成的 HTML 中添加一些 CSS 类。整个表格被赋予 indexlist
的 CSS ID,并且以下类与列表的各个部分相关联
类 | 定义 |
---|---|
tr.indexhead | 列表的标题行 |
th.indexcolicon 和 td.indexcolicon | 图标列 |
th.indexcolname 和 td.indexcolname | 文件名列 |
th.indexcollastmod 和 td.indexcollastmod | 上次修改列 |
th.indexcolsize 和 td.indexcolsize | 文件大小列 |
th.indexcoldesc 和 td.indexcoldesc | 描述列 |
tr.breakrow | 表格底部的水平规则 |
tr.odd 和 tr.even | 交替的奇数行和偶数行 |
描述 | 将插入到索引列表末尾的文件的名称 |
---|---|
语法 | ReadmeName filename |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_autoindex |
ReadmeName
指令设置将附加到索引列表末尾的文件的名称。 Filename 是要包含的文件的名称,并被认为相对于要索引的位置。如果 Filename 以斜杠开头,如示例 2 中所示,则它将被认为相对于 DocumentRoot
。
# Example 1 ReadmeName FOOTER.html
# Example 2 ReadmeName /include/FOOTER.html
另请参见 HeaderName
,其中详细描述了此行为。