前面提到了许多有用的会见节制要领,其实通过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之间默认的逻辑毗连词是逻辑“与”。
这里的难点是领略逻辑转换,即德·摩根定律。