知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

Apache HTTP Server(三)--配置片段

发布时间:2014-09-05 16:07:56作者:知识屋

Apache HTTP Server(三)--配置片段
 
基本容器
 
<IfDefine>只在命令行参数里有相应定义时才会应用。比如:
<IfDefine ClosedForNow>
    Redirect / http://otherserver.example.com/
</IfDefine>
只有以Apache2 -DClosedForNow命令启动时才会应用。
 
<IfModule>只在相应模块可用时才应用。比如:
<IfModule mod_mime_magic.c>
    MimeMagicFile conf/magic
</IfModule>
只在模块mod_mime_magic可用时才有效。
 
<IfVersion>根据服务器版本应用。比如:
<IfVersion >= 2.4>
    # this happens only in versions greater or
    # equal 2.4.0.  www.zhishiwu.com  
</IfVersion>
 
文件系统容器
<Directory>指定一个目录并把指令应用到该目录以及它所有的子目录里,和.htaccess文件的作用相同。
例如:
<Directory /var/web/dir1>
    Options +Indexes
</Directory>
 
<File>指定文件名,而不管它在哪个目录里。例如:
<Files private.html>
    Require all denied
</Files>
 
<Directory>和<Files>也可以联合使用:
<Directory /var/web/dir1>
    <Files private.html>
        Require all denied
    </Files>
</Directory>
它应用于指定目录及其子目录里的所有名为private.html的文件。
 
web空间容器
与文件系统不同,这主要是指明URL内的路径。例如:
<LocationMatch ^/private>
    Require all denied
</Location>
它 可以匹配所有以/private开头的URL路径,比如:http://yoursite.example.com/private、http: //yoursite.example.com/private123、和http://yoursite.example.com/private /dir/file.html等。  www.zhishiwu.com  
 
<Location>所指的文件可能不存在于文件系统里,它可能是根据数据库生成的。一般原则是:可以用<Directory>和<File>表示的,尽量不要使用<Location>。
 
在路径出现交叠时,我们要注意顺序,例如我们必须这样写:
<Location /foo>
</Location>
<Location /foo/bar>
</Location>
 
相对的,<Alias>应该使用相反的顺序:
Alias /foo/bar /srv/www/uncommon/bar
Alias /foo /srv/www/common/foo
 
ProxyPass也是如此:
ProxyPass /special-area http://special.example.com smax=5 max=10
ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid nofailover=On
 
通配符和正则表达式
<Directory>、<Files>、和<Location>里可以使用shell风格的通配符:“*” 表示任意字符串;“?”表示任意单个字符;“[seq]”表示任意出现在seq里的字符。“/”不会匹配任何通配符,必须明确指明。比如:
<Directory /home/*/public_html>
    Options Indexes
</Directory>  www.zhishiwu.com  
 
这些指令还有相应的正则表达式的指令:<DirectoryMatch>、<FilesMatch>、和<LocationMatch>。比如:
<FilesMatch /.(?i:gif|jpe?g|png)$>
    Require all denied
</FilesMatch>
 
逻辑表达式
<If>指令根据逻辑表达式来选择应用。例如:
<If "!(%{HTTP_REFERER} -strmatch 'http://www.example.com/*')">
    Require all denied
</If>
当HTTP Referer头不以http://www.example.com/开头时启用。
 
<If>可以内嵌在<Directory>、<File>、和<Location>里。
 
虚拟主机
<VirtualHost>容器针对特定的主机。
 
代理
<Proxy>和<ProxyMatch>容器,应用于通过mod_proxy的代理服务器的站点。例如:
<Proxy http://www.example.com/*>
    Require all granted
</Proxy>
阻止代理服务器被用来访问http://www.example.com/。
  www.zhishiwu.com  
有效的指令
通常在<Directory>里有效的指令也可以 在<DirectoryMatch>、<Files>、<FilesMatch>、<Location>、<LocationMatch>、<Proxy>、 和<ProxyMatch>里使用。但也有以下例外:
 
AllowOverride只能在<Directory>里使用。
FollowSymLinks和SymLinksIfOwnerMatch选项只在<Directory>和.htaccess文件里使用。
Options指令不能在<Files>和<FilesMatch>里使用。
 
 
作者 yourtommy
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜