Apache服务器配置之:Options指令
请注意:本文内容仅适用于Apache2.4+
版本
我们在《如何在CentOS7上配置Apache虚拟主机?》一文中提到过网站配置文件example.com.conf中的参数配置:
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /mnt/www/example.com/public_html ErrorLog /mnt/www/example.com/error.log CustomLog /mnt/www/example.com/requests.log combined <Directory /mnt/www/example.com/public_html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
Options
指令是Apache配置文件中一个比较常见也比较重要的指令,Options
指令可以在Apache服务器核心配置(server config)、虚拟主机配置(virtual host)、特定目录配置(directory)以及.htaccess文件中使用。Options
指令的主要作用是控制特定目录将启用哪些服务器特性。
Options
指令的完整语法为:Options [+|-]option [[+|-]option] ...
。简而言之,Options指令后可以附加指定多种服务器特性,特性选项之间以空格分隔。下面我们来看看Options
指令后可以附加的特性选项的具体作用及含义(Apache配置中的内容均不区分大小写):
Indexes
如果输入的网址对应服务器上的一个文件目录,而此目录中又没有DirectoryIndex
指令(例如:DirectoryIndex index.html index.php
),那么服务器会返回由mod_autoindex
模块生成的一个格式化后的目录列表,并列出该目录下的所有文件(如下图)。
如果你去掉Indexes会显示这样的结果:
FollowSymLinks
服务器允许在此目录中使用符号连接。
AllowOverride
这个指令就很重要了,应该经常有小伙伴发现服务器不支持rewrite
,其实就是因为设置成了AllowOverride None
,该参数的作用是配置Apache服务器是否允许.htacess
文件作为配置文件,如果设置为None
,网站目录下的.htacess
文件将不会起任何作用,如果设置为All
,那么所有在.htaccess
文件中的重复参数会覆盖example.com.conf。
AllowOverride的可选参数:
- AuthConfig 允许使用与认证授权相关的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
- FileInfo 允许使用控制文档类型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add* 和 Remove* 指令等等)、控制文档元数据的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod_actions中的Action指令。
- Indexes 允许使用控制目录索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, 等)。
- Limit 允许使用控制主机访问的指令(Allow, Deny, Order)。
- Options[=Option,...] 允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的(无空格的)Options选项列表,用来控制允许Options指令使用哪些选项。
Require
这个参数是Apache 2.2的升级改进,旧版本的写法是:
Order deny,allowDeny from all
2.4版本中Require的常用命令:
Require all granted
#允许所有请求,没有这个设置外网是无法访问的Require all denied
#拒绝所有请求Require host xxx.com
#仅限于xxx.com域的请求Require ip 192.168.1 192.168.2
#仅限于IP192.168.1、192.168.2的请求Require local
#仅限本地请求Require not ip 192.168.0.1
#拒绝IP192.168.0.1的请求,要和Require all granted
配合使用