Apache之http服务

1.< IfModule 目录模块>
  < IfModule 目录模块>作用于模块,它会首先判断该模块是否载入,然后再决定是否进行处理,也就是说只有当判断结果为真时才会执行容器内的指令,相反如果为假,则会全部忽略。可以使用<IfModule 模块名> 或 <IfModule !模块名> 来判断模块是否载入。
例1:
在这个例子中,< IfModule>会判断 dir_module 是否载入,如果载入则会执行 DirectoryIndex index.html 指令。
在这里插入图片描述
例2:

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
	User daemon
	Group daemon
< /IfModule>
< /IfModule>

在上面的例子中,< IfModule>容器会首先判断 mpm_netware_module 模块是否载入,如果没有载入,会继续执行容器的下一条,判断 mpm_winnt_module 模块是否载入,当 mpm_winnt_module 也没有载入时,< IfModule> 容器内的 user 与 group 指令就会被执行。
2.< IfDefine>容器

< IfDefine>容器与 < IfModule>容器类似,都是对条件进行判断,只不过< IfDefine> 容器只有当条件判断为真时才会执行,而且它还需要在 httpd 启动时加上特定的参数才能起作用。

< IfDefine  Proxy>
	LoadModule  proxy_module  modules/libproxy.so
< /IfDefine>

要向是上述命令生效,启动 httpd 时的语句应该如下所示:
httpd -D Proxy

<IfDefine !Proxy>
	LoadModule proxy_module  modules/libproxy.so
</IfDefine>

httpd -D Proxy

在这个例子中,<IfDefine !Proxy> 容器中的 !Proxy 与之前相比多了一个 “!”,于是它与之前的例子完全相反,<IfDefine !Proxy> 容器内的设置会被忽略掉。

  1. < Directory> 与 < DirectoryMatch> 容器

< Directory>容器的作用就是让它所封装的指令在指定的目录以及它的子目录中起作用,这个目录必须是一个完整的路径,当然也可以使用通配符 " * “、”?" 匹配目录,也可以使用 “[]” 来确定字符范围,不过无论是" * “、”?" , 还是 “[]” 都不能匹配 “/”
例如,<Directory /srv/ * /html/index.html> 不能匹配 <Directory /srv/ * /index.html>,而只能匹配<Directory /srv/apache/html/index.html> 或是 <Directory /srv/username/html/index.html> 。

<Directory /srv/apache/html/>
	Order Deny,Allow	
	Deny from All
</Directory>

在上面的例子中,禁止了对 /srv/apache/html/ 目录的访问权限,任何请求到 /srv/apache/html/ 的链接都会被拒绝。

除了上面所提到的通配符和"[]" 之外,还可以通过在正则表达式的前面加上"~" 来使用正则表达式进行匹配,例如:

<Directory  ~"^/srv/apache[0-9]{2}/html/">
	Order Deny,Allow
	Allow from All
</Directory>

在上面的例子中,通过使用正则表达式来匹配 /srv/ 下所有以 apache 开头以0至9结尾的两位数字的目录下的 /html/ 目录并允许这些目录被任何用户访问,这个容器的URL请求类似于下面的链接:

< DirectoryMatch> 容器与 < Directory> 容器的作用相似,都是作用于目录,只是 < DirectoryMatch>容器可以直接接受正则表达式,而无须加上"~",例如:

<DirectoryMatch "^/srv/apache[0-9]{2}/html/">
	Order Deny,Allow
	Allow from All
</DirectoryMatch>
  1. < Files> 与 < FilesMatch> 容器

与< Directory>容器作用于目录相对应,< Files>容器只作用于文件,和< Directory>容器一样,也可以使用通配符和"[]" 以及在正则表达式的前面加上"~" 来使用正则表达式进行文件匹配。例如,匹配所有的以 .html 后缀结尾的文件并允许所有用户访问:

<Files "^\.html">
	Order Deny,Allow
	Allow from All
</Files>

< FilesMatch>容器与< Files>容器类似,只是它除了有< Files>容器的功能外,还能直接使用正则表达式来进行匹配。

发布了17 篇原创文章 · 获赞 2 · 访问量 368

猜你喜欢

转载自blog.csdn.net/qq_44487069/article/details/104539918
今日推荐