Apache Options指令详解

2017-03-31 14:37:25 6859

前言:Options指令是Apache配置文件中一个比较常见也比较重要的指令,Options指令可以在Apache服务器核心配置(server config)、虚拟主机配置(virtual host)、特定目录配置(directory)以及.htaccess文件中使用。Options指令的主要作用?控制特定目录将启用哪些服务器特性。

Options指令常见的配置示例代码如下:

<Directory "/home/www">

    #指定根目录/home/www启用IndexesFollowSymLinks两种特性

    Options Indexes FollowSymLinks

    AllowOverride all

    Require all granted

</Directory>

 

Options服务器特性

Options指令的完整语法为:Options [+|-]option [[+|-]option];简而言之,Options指令后可以附加指定多种服务器特性,特性选项之间以空格分隔。下面我们来看看Options指令后可以附加的特性选项的具体作用及含义(Apache配置中的内容均不区分大小写)

 

1All

表示除MultiViews之外的所有特性(这也是Options指令的默认设置)

 

2None

表示不启用任何的服务器特性

 

3FollowSymLinks

服务器允许在此目录中使用符号连接(如果该配置选项位于配置段中,将会被忽略),意思是:允许网站目录里的链接文件链接到首页目录以外的文件。举例来说,如果你把首页目录设置为/var/www/html,那么你的网页程序最多只能访问到/var/www/html目录,上层目录是不可见的。但是可以通过链接把文件链接到/var/www/html目录以外的文件以访问该文件,如果FollowSymLinks被设置的话。

4Indexes

如果输入的网址对应服务器上的一个文件目录,而此目录中又没有DirectoryIndex指令(例:DirectoryIndex index.html index.PHP),那么服务器会返回由mod_autoindex模块生成的一个格式化后的目录列表,并列出该目录下的所有文件(如下图)

blob.png


 

4MultiViews

允许使用mod_negotiation模块提供内容协商的多重视图。简而言之,如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。例如,在服务器站点的file文件夹下中在名为hello.jpghello.html的两个文件,此时用户输入Http://localhost/file/hello,如果在file文件夹下并没有hello子目录,那么服务器将会尝试在file文件夹下查找形如hello.*的文件,然后根据用户请求的具体情况返回最匹配要求的hello.jpg或者hello.html

 

5SymLinksIfOwnerMatch

服务器仅在符号连接与目标文件或目录的所有者具有相同的用户ID时才使用它。简而言之,只有当符号连接和符号连接指向的目标文件或目录的所有者是同一用户时,才会使用符号连接(如果该配置选项位于配置段?,将会被忽略)

 

6ExecCGI

允许使用mod_cgi模块执行CGI脚本

 

7Includes

允许?用mod_include模块提供的服务器端包含功能,例如让apache支持ssi

 

8IncludesNOEXEC

允许服务器端包含,但禁用”#exec cmd””#exec cgi”。但仍可以从ScriptAlias目录使用”#include virtual”虚拟CGI脚本

 

注意

此外,比较细心的读者应该注意到,Options指令语法允许在配置选项前加上符号”+”或者”-“,那么这到底是什么意思呢?

实际上,Apache允许在一个目录配置中设置多个Options指令。不过,一般来说,如果一个目录被多次设置了Options,则指定特性数量最多的一个Options指令会被完全接受(其它的被忽略),而各个Options指令之间并不会合并。但是如果我们在可选配置项前加上了符号”+””-“,那么表示该可选项将会被合并。所有前面加有”+”号的可选项将强制覆盖当前的可选项设置,而所有前面有”-“号的可选项将强制从当前可选项设置中去除。你可以参考下面的例子:

 

#示例1

 

<Directory /web/file>

    Options Indexes FollowSymLinks

</Directory>

 

<Directory /web/file/image>

    Options Includes

</Directory>

#目录/web/file/image只会被设置Includes特性

 

#示例2

 

<Directory /web/file>

    Options Indexes FollowSymLinks

</Directory>

 

<Directory /web/file/image>

    Options +Includes -Indexes

</Directory>

#目录/web/file/image将会被设置IncludesFollowSymLinks两种特性

 

备注1:混合使用前面带”+””-“和前面不带”+””-“的同一可选项,可能会导致出现意料之外的结果 

备注2:使用-IncludesNOEXEC-Includes时,不论前面如何设置,都会完全禁用服务器端包含。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: