Apache服务器通过在配置文件中设置指令来控制它自身的工作方式,这些指令分属于不同的模块。其中一些最常用的指令都属于Apache服务器的核心模块,这些指令支持Apache服务器完成最基本的http协议的功能,同时也是构建其它模块的基础。核心模块是被缺省编泽的,即使在包含最少功能的可执行服务器桂序中,用户也可以在配置文件中使用这些指令。
3.1指令基本格式
每一条Apache配置指令我们都可以使用如下形式来描述
Symax: directive-name someargs
Default: directjve-name defnult-vaiue
Context: context-1 1st
Override: override
Status:status
Module: module-name
下面我们详细介绍这儿个概念。
一、Syntax:指令格式
它用来说明指令将以们种形式出现在配置文件中。它的基本形式是指令名后带有0个或多个参数。指令格式对每条指令肯很强的针对性,具体情况要参照指令的描述内容。
二、Default:缺省值
每条可带参数的指令,Apache都将为它赋一个缺省值。如果在配置文件中没有使用该条指令,Apache网络服务器在运行时将使用这个预赋值,也是说,在配置文件中使用这条指令时,如果使用的参数楚缺省值,那么和不使用这条命令的效果是一样的。如果某条指令不具有缺省值,这一项应该标明为“none”。
三、Context:适用范围
这一项用来表明指令适用的服务器配置文件。它足用逗号作为分编符的一个列表,表中具有一个或者多个如下所列的值
server conng:表示浚条指令只能应川于服务器配置文件(也是httpd.conf,srm conf和.access.conf),但是不能出现在<VirtualHost>或<D/rectory>字段中,并且也不允许出现在.htacccss文件中。
Virtual host:这个参数值说明这条指令要出现在服务器配置文什的<VirtualHost>段中。
四、Override:覆盖控制
这个属性用来控制全局访问文件和.htaccess的关系,当条指令出现在一个.htaccess文件中时.为了使得该指令可以被执行,我们必须指定在htaccess中出现的指令是以何种方式来覆盖全局文件的,如果某条指令的使用范围不允许它出现在.htaccess文件中,这一属性将f为“Not applicable”。
Override属性是由Allowoverride指令来设置的,并被用于一个特定的日录和其所有的子目录,如果对某级子目录使用新的AllowOverride指令进行了设置,那么在达级子目录及其更低级了目录内将按照新设定的值来工作。比如在文件系统中存在目录^sr/home/ken.如果针对日录home设置了文件.htaccess,而并未对它的子日录ken进行设置,那么服务器在处理有关目录ken的操作时,将按照home目录下htaccess中的设置来处理;如果在/usr/home/ken也设置了.htaccess,那么服务器将按照这个文件来处理有关目录,USR/home/ken的操作。
五、Status:等级
这个属性用来表明条指令与Apache网络服务器的关联程度,也是说,并不是所有的指令都是缺省编译到服务器的,荇我们需要使用某一组命令,则必须在编译时将这些命令所属的模块包含进去,生成新的可执行文件。该属性的可能值为:
core:如果以条指令被标明具有“core”状态,那么意味着它姓Apache网络服务器摄核心内容的一部分,在任何一种版本的可执行文件中都可以使用它。
Base:如果~条指令被标明具有“Base”状态,那么这条命令所属的模块是被缺省编译到司执行文件中的,在一般情况下这些命令都可以使用,除非使用者在生成可执行文件时专门将该模块从Configurarion文件中删除。
Extension:具有“Extension”状态的指令包含在Apache服务器提供的一些模块中,但是这些模块通常没有被被编泽到服务器的可执行程序。如果想使用这些指令及其功能,使用者需要改变服务器配置文件并重新编译。
Experimental:具有“Experimental”状态表明该指令是Apache工具包的一部分,但使用与否完全有用户决定。这些指令都有详细的文档,但缺乏必要的技木支持。也是说,这些指令都是处在试验阶段的。
六、Module:所属模块
指令的这个属性仅仅告诉用户这条指令包含在哪个模块巾,比如Core,mod_alias等,这里的Core模块和Status属性中的core等级是两个不周的概念,Core模块中所有指令的Status属性都是core,但其它模块中也有些指令的属性是core。