主要配置文件
Apache通过在文本配置文件里放置指令来配置HTTP服务器。主配置文件通常为httpd.conf(apache2为/etc /apache2/apache2.conf,它会包含httpd.conf),该文件的位置在编译期中设置,也可以使用命令行参数-f来重写。此外,其 它配置文件可以通过Include指令来引用,这里可以使用通配符来引用多个配置文件(比如厅Include mods-enabled/*.conf)。httpd在启动或重启时会加载主要配置文件。
服务器也读取一个包含mime文档类型的文件,文件名通过TypeConfig指令来指定。默认情况下为mime.types.
语法
配置文件里通过一个指令为一行。在行末用""可以标示指令占据多行。
指令本身是不区分大小写的,但它的参数通常是大小写敏感的。以#开头的行被视为注释。空白行和指令前的空格都被忽略。
Define定义的变量和shell环境变量可以通过${VAR}的形式在配置文件里使用。通过Define定义的变量比环境变量的优先级高。如果 VAR没有定义,那么${VAR}会保持不变,而且一个警告会发生。变量名不能包含":",以免干扰RewriteMap指令。
只有在服务器启动前定义的环境变量才会被展开。在配置文件本身定义的环境变量,如通过SetEnv定义的,不会展开。
配置文件在展开变量、联合后续行(结尾表示)后的最大长度大约为16Mhtaccess文件里行的最大长度为8190个字符。
使用命令apachectl configtest或apachectl -t可以在不启动服务器的情况下检查配置文件语法错误。
mod_info模块的-DUMP-CONFIG可以输出解析所有引用文件和环境变量,以及删除注释、不匹配的<IfDefine>和<IfModule>的配置文件。
模块
核心服务器只包含了最基本的功能,扩展特性可以通过加载模块来使用。默认情况下,一个模块的基本集在编译期包含进了服务器。如果服务器被编译成使用 动态加载模块,那么模块可以分开编译,并在任何时候使用LoadModule指令加入。否则,服务器必须重新编译来加入或删除模 块。<IfModule>块里的指令只在所需模块被加载时才会执行,比如:
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
命令行参数-l可以查看编译进server的模块,-M可以查看动态加载的模块。
指令作用域
在主配置文件里的指令会作用于整个服务器。 放 入<Directory>、<DirectoryMatch>、<Files>、<FilesMatch>、<Location>、 和<LocationMatch>块里的指令只作用于服务器的一部分。它们根据文件系统的位置或URL来应用指令。它们也可以嵌套。
Apache允许多个不同的网站同时运行,这被称为Virtual Hosting.在<VirtualHost>块里的指令只应用到特定的网站里。
尽管多数指令都可以放在任何区块里,但一些指令在一些上下文里没有意义。
.htaccess文件
如果在某个目录下放置一个。htaccess文件,那么它里面的配置会应用在当前目录以及它的所有子目录里htaccess文件的语法和主配置文件的语法相同。这个文件的名字也可以通过主配置文件里的AccessFileName指令来指定。
由于。htaccess文件在每次请求时读取,该文件的任何修改都会立即得到反映。
主配置文件里可以使用AllowOverride指定来决定什么指令可以放置在。htaccess文件里。