多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 配置文件 本页阐述了Apache服务器的配置文件。 ## 主配置文件 相关模块 * `mod_mime` 相关指令 * `<IfDefine>` * `Include` * `TypesConfig` Apache的配置文件是包含若干[指令](#calibre_link-2)的纯文本文件。主配置文件通常叫`httpd.conf` ,其位置是编译时确定的,但可以用命令行参数 `-f` 来改变。另外,还可以用`Include`指令和通配符附加许多其他配置文件。任何配置文件都可以使用任何指令。只有在启动或重新启动Apache后,主配置文件的更改才会生效。 服务器还会读取一个包含MIME文件类型的文件,其文件名由`TypesConfig`指令确定,默认值是`mime.types` 。 ## 配置文件的语法 Apache配置文件的每一行包含一个指令,在行尾使用反斜杠"\"可以表示续行,但是反斜杠与下一行之间不能有任何其他字符(包括空白字符)。 配置文件中的指令是不区分大小写的,但是指令的参数(argument)通常是大小写敏感的。以"#"开头的行被视为注解并被忽略。注解**不能**出现在指令的后边。空白行和指令前的空白字符将被忽略,因此可以采用缩进以保持配置层次的清晰。 可以用 `apachectl configtest` 或者命令行选项 `-t` 检查配置文件中的错误,而无须启动Apache服务器。 ## 模块 相关模块 * `mod_so` 相关指令 * `<IfModule>` * `LoadModule` Apache是模块化的服务器,这意味着核心中只包含实现最基本功能的模块。扩展功能可以作为[模块](#calibre_link-1)动态加载。默认情况下,只有[base](#calibre_link-12)组的模块被编译进了服务器。如果服务器在编译时包含了[DSO模块](#calibre_link-259),那么各模块可以独立编译,并可随时用`LoadModule`指令加载;否则,要增加或删除模块必须重新编译整个Apache。用于特定模块的指令可以用`<IfModule>`指令包含起来,使之有条件地生效。 用命令行参数 `-l` 可以查看已经编译到服务器中的模块。 ## 指令的作用域 相关模块 * `<Directory>` * `<DirectoryMatch>` * `<Files>` * `<FilesMatch>` * `<Location>` * `<LocationMatch>` * `<VirtualHost>` 相关指令 主配置文件中的指令对整个服务器都有效。如果你只想改变某一部分的配置,你可以把指令嵌入到`<Directory>`、`<DirectoryMatch>`、`<Files>`、`<FilesMatch>`、`<Location>`、`<LocationMatch>`配置段中,这样就可以限制指令的作用域为文件系统中的某些位置或特定的URL。这些配置段还可以进行嵌套,以进行更精细的配置。 Apache还具备同时支持多个站点的能力,称为[虚拟主机](#calibre_link-36)。`<VirtualHost>`配置段中的指令仅对该段中的特定站点(虚拟主机)有效。 虽然大多数指令可以包含在任意的配置段中,但是某些指令仅在某些特定的范围内才有意义。比如,控制进程建立的指令仅在主服务器范围内有效。要查询一个指令可以被应用于哪些配置段中,可以查看该指令的[作用域](#calibre_link-20)项。更详细资料可以查看[配置段说明](#calibre_link-256)。 ## .htaccess 文件 相关模块 * `AccessFileName` * `AllowOverride` 相关指令 Apache可以使用分布在整个网站文件目录树结构中的特殊文件来进行分散配置,这些特殊的文件通常叫`.htaccess` ,但是也可以用`AccessFileName`指令来改变它的名字。`.htaccess`文件中指令的作用域是存放它的那个目录及其所有子目录。`.htaccess`文件的语法与主配置文件相同。由于对每次请求都会读取`.htaccess`文件,所以对这些文件的修改会立即生效。 要了解一个指令是否可以用在`.htaccess`文件中,可以查阅该指令的[作用域](#calibre_link-20)项。服务器管理员可以在主配置文件中使用`AllowOverride`指令来决定哪些指令可以在`.htaccess`文件中生效。 有关`.htaccess`文件更详细的资料,可以查看[.htaccess 指南](#calibre_link-222)。