阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache Options指令详解

228次阅读
没有评论

共计 2100 个字符,预计需要花费 6 分钟才能阅读完成。

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

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

  1. <Directory/>
  2. # 指定根目录 ”/” 启用 Indexes、FollowSymLinks 两种特性。
  3.     Options Indexes FollowSymLinks
  4.     AllowOverride all
  5.     Order allow,deny
  6.     Allow from all
  7. </Directory>

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

All
表示除 MultiViews 之外的所有特性。这也是 Options 指令的 默认设置
None
表示不启用任何的服务器特性。
FollowSymLinks
服务器允许在此目录中使用符号连接。如果该配置选项位于 <Location> 配置段中,将会被忽略。
Indexes
如果输入的网址对应服务器上的一个文件目录,而此目录中又没有 DirectoryIndex 指令 (例如:DirectoryIndex index.html index.php),那么服务器会返回由mod_autoindex 模块生成的一个格式化后的目录列表,并列出该目录下的所有文件(如下图)。

Apache Options 指令详解

MultiViews
允许使用 mod_negotiation 模块提供内容协商的 ” 多重视图 ”。简而言之,如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。例如,在服务器站点的 file 文件夹下中存在名为 hello.jpghello.html的两个文件,此时用户输入 Http://localhost/file/hello,如果在file 文件夹下并没有 hello 子目录,那么服务器将会尝试在 file 文件夹下查找形如 hello.* 的文件,然后根据用户请求的具体情况返回最匹配要求的 hello.jpg 或者hello.html
SymLinksIfOwnerMatch
服务器仅在符号连接与目标文件或目录的所有者具有相同的用户 ID 时才使用它。简而言之,只有当符号连接和符号连接指向的目标文件或目录的所有者是同一用户时,才会使用符号连接。如果该配置选项位于 <Location> 配置段中,将会被忽略。
ExecCGI
允许使用 mod_cgi 模块执行 CGI 脚本。
Includes
允许使用 mod_include 模块提供的服务器端包含功能。
IncludesNOEXEC
允许服务器端包含,但禁用 ”#exec cmd” 和 ”#exec cgi”。但仍可以从 ScriptAlias 目录使用 ”#include virtual” 虚拟 CGI 脚本。

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

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

  1. # 示例 1
  2. <Directory/web/file>
  3. OptionsIndexesFollowSymLinks
  4. </Directory>
  5. <Directory /web/file/image>
  6. OptionsIncludes
  7. </Directory>
  8. # 目录 /web/file/image只会被设置 Includes 特性
  1. # 示例 2
  2. <Directory/web/file>
  3. OptionsIndexesFollowSymLinks
  4. </Directory>
  5. <Directory /web/file/image>
  6. Options+IncludesIndexes
  7. </Directory>
  8. # 目录 /web/file/image将会被设置 IncludesFollowSymLinks 两种特性

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

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

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139464.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2100字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中