与apache打交道,apache的配置文件应该会接触的比较多,最核心当属http.conf这个文件。这个文件里有很多detectives(命令),一些常用的命令:
1. 命令
DocumentRoot : 根目录,客户端有权限可访问的。配置虚拟主机对应变化。例如:
/usr/local/apache/htdocs
ServerRoot : 软件的安装目录。例如
ServerRoot /usr/local/apache
LoadModule : 动态加载其他的模块,语法格式为LoadModule 模块 模块文件名称,模块文件一般位于ServerRoot指定目录下的modules目录中,例如:
LoadModule actions_module modules/mod_actions.so
LoadFile: 类似楼上,也可以加载模块文件,例如:
LoadFile "libexec/libxmlparse.so"
Include: 加载其他一些配置文件,可以使用shell-style通配符*,例如
Include /usr/local/apache/conf/*.conf
如果加载的文件存在找不到的情况,该命令会出错,可以使用升级版命令,IncludeOptional。该命令会忽略找不到的错误。
Order: 用于设置指定目录的访问权限。不过2.4后好像被Require取代了。
Require: 类似Order命令。设置访问权限,例如:
Require all denied/granted,代表全部拒绝/允许。
Require user/group userid/group-name [user-id]/[group-name] , 允许通过用户id或组名来控制
Require ip *.*.*.*,允许ip。空格隔多个
Options: 设置指定目录的一些选项,有MultiView(多语言相关),Indexed(当没有指定index.*,列出目录树),FollowSysLinks(允许目录下通过链接文件链接到目录外的文件或目录),ExecCGI(允许执行CGI脚本)等等
AllowOverride: 允许指定的目录下,使用.htaccess这个文件。必须加载了mod_rewrite模块。
2. 一些容器命令
<Directory path></Directory>:用来设置指定的目录,子目录和文件。文件路径最好用引号包起来,因为防止有空格,而一个空格代表一个参数的结束。也可以用正则表达式来表示,但是必须前面加上~符号,或者使用DirectoryMatch容器命令。
<IfModule module_name></IfModule>:当指定的模块被加载了,才会执行容器里的命令。例如:
<IfModule mime_magic_module>
MIMEMagicFile "conf/magic"
</IfModule>
<Files file></Files>: 类似Directory,用来对指定文件操作。
<FilesMatch file_reg></FilesMatch>: 类似DirectoryMatch,可以使用正则表达式。也可以用~符号代替。
<Location url></Location>: 对指定的url操作。
<LocationMatch url_reg></Location>,同上。
相关参考: