Chapter: htaccess 配置能力5. 用htaccess举办会见节制

前面提到了许多有用的会见节制要领,其实通过Rewrite也能实现雷同的成果,并且可以更强大。

1. 文件会见节制

操作 httpd.conf 中的 Order、Files 及 FilesMatch 呼吁实现的会见节制可以满意大部门要求,可是当用户被拒绝时,他们看到的是硕大的“403 Forbidden”,假如你不想伤害用户的情感,就需要显示一些此外对象,通过Rewrite就可以实现这个特性:

1   RewriteEngine On  

2   RewriteCond %{REQUEST_FILENAME} !^(.+)\.css$  

3   RewriteCond %{REQUEST_FILENAME} !^(.+)\.js$  

4   RewriteCond %{REQUEST_FILENAME} !special.zip$  

5   RewriteRule ^(.+)$ /chat/ [NC]  

该法则将仅答允用户请求.css, .js范例的文件,尚有special.zip文件。

RewriteRule 后头指定了限制法则:映射到/char/目次下处理惩罚。

RewriteCond 后头的“叹息号”(!)起到了“否认”浸染,它表白,对不满意后头正则表达式者应用RewriteRule法则,也就是对当前范例的文件将不该用法则。

RewriteCond 之间是以逻辑“与”毗连的,也就是只有当三个条件都不满意时才执行RewriteRule。

该法则也会限制会见.htm, .jpg等名目。

该法则不行以放在虚拟站点根目次(/)下,不然会死轮回。

假如是二级目次,如/test/,那么传入RewriteCond的参数是以/test/开始的,因此从(.+)得到的文件名也含有/test/,读者必需对此多加小心。

要想仅得到文件名,可以将(.+)替换成([^/]+),而且去掉标记^,如下所示:

1   RewriteEngine On  

2   RewriteCond %{REQUEST_FILENAME} !([^/]+)\.css$  

3   RewriteCond %{REQUEST_FILENAME} !([^/]+)\.js$  

4   RewriteRule ^(.+)$ /chat/ [NC]  

2. 用 .htaccess 阻止 User-agent

什么是User-agent?User-agent用于欣赏器向处事器“自报家门”,更确切的说是所有HTTP客户端都得用User-agent向处事器“自报家门”,以便处事器对差异的客户端作出差异响应。好比,某站点大概需要对欣赏器、搜索引擎crawl尚有种种下载东西作出差异的响应。处事器就是通过所谓的User-agent举办区分的。

假如你的处事器提供某些资源的下载,那么你就必需多加小心诸如“迅雷”等下载软件,因为它们大概把你网站资源吸干,而且影响你的正常访客会见。为此,我们可以操作Rewrite限制某些UA的会见:

1   RewriteEngine on  

2   RewriteCond %{HTTP_USER_AGENT} 2.0.50727 [NC]  

3   RewriteRule . abuse.txt [L]  

该法则限制“迅雷”客户端下载资源,并将下载文件重置到abuse.txt

HTTP_USER_AGENT是Apache的内置变量

2.0.50727是迅雷User-agent的特征字符串

RewriteRule后头的“点”暗示“任意URI”,也就是不管请求的是什么,都输出abuse.txt

凡是,我们不会仅限制一个UA。操作[OR]即可实现对多个UA作出统一处理惩罚:

1   RewriteEngine on  

2   RewriteCond %{HTTP_USER_AGENT} 2.0.50727 [NC,OR]  

3   RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [NC,OR]  

4   # etc..  

5   RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [NC]  

6   RewriteRule . abuse.txt [L]  

3. 用.htaccess阻止盗链(hot-linking)

盗链,出格是图片,长短常可耻的!哪怕将图片复制到本身处事器上,也比盗用他人的图片链接来得色泽!

.htaccess的Rewrite成果可以提供很是简朴、有效的要领阻止这种可耻行为:

1   RewriteEngine On  

2   RewriteCond %{HTTP_REFERER} !^$  

3   RewriteCond %{HTTP_REFERER} !^http://(www\.)?nowamagic\.net/ [NC]  

4   RewriteCond %{REQUEST_URI} !hotlink\.png [NC]  

5   RewriteRule .*\.(gif|jpg|png)$ /hotlink.png [NC]  

简朴表明一下该法则的成果:

除本站以外其他网站都不得引用本站图片,详细可以领略为:

假如引用站点为“空”可能是“本站”,可能,所引用工具是“hotlink.png”,那么就答允会见。

再次提醒,RewriteCond之间默认的逻辑毗连词是逻辑“与”。

这里的难点是领略逻辑转换,即德·摩根定律。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7713.html