htaccess访问控制篇:限制IP访问、防盗链

前一篇博客中,介绍了重定向、自定义默认首页、自定义错误页眉,在这篇日志中,向大家介绍一下如何利用htaccess进行访问控制。

限制IP访问

有的时候,特定的文件夹不能公开,比如管理目录,只允许自己几个人访问,那么可以利用限制IP的方式来实现。可以是整段的IP,也可以是单独的IP。

<Files *>
order allow,deny
allow from 192.168.0.0/24
allow from 192.168.10.22
deny from all
</Files>

基于referer来限制网站访问

RewriteEngine on
RewriteCond %{HTTP_REFERER} spamteam.com [NC,OR]
RewriteCond %{HTTP_REFERER} trollteam.com [NC]
RewriteRule .* - [F]

防止目录浏览

一般情况下目录浏览是关闭的,如果目录浏览被默认打开,可以使用一下语句来禁止目录浏览。

Options -Indexes

如果你刚好想让某个目录能够被公开,那么改成以下语句就可以了:

Options +Indexes

防盗链

对于带宽、流量充足的博客来说,防不防盗链无所谓,但是对于流量本来就很大的博客,不防盗链的话,很有可能会拖慢自己的速度,当你发现自己的文章被大规模转载的时候,该考虑防盗链了。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(images/|wp-content/).* [NC]
RewriteCond %{HTTP_REFERER} !^$ #表示主机不为空
RewriteCond %{HTTP_REFERER} !^http://(.+.)?ezloo.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} !^http://(.+.)?movabletype.com.cn/ [NC]
RewriteRule .*.(jpe?g|gif|bmp|png|mp3|mpg|mp4|mov|wav|wmv|css|js)$ /hotlink.jpg [L]

解释:

[NC] 不分字母大小写

[OR] 有多条规则的时候使用,最后一条不需要

[R] 强制重定向,[R=code] code默认为302

[F] 返回HTTP 403 错误

[L] 这是最后一条规则

1 Comment

  1. httaccess还可以阻止特定的User Agent访问:

    <FilesMatch "(.*)">
    SetEnvIfNoCase user-agent "Mozilla\/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\)" bad_bot=1
    Order Allow,Deny
    Allow from all
    Deny from env=bad_bot
    </FilesMatch>

    要是MovableType的博客被恶意的Spam盯上,大量的Spam对服务器的资源开销是相当大的,虚拟主机很容易会因为流量或者资源消耗问题而被关停。

    MT的cgi-bin目录下也可以放一个.htaccess,填上bad_bot的UA。我的MT4使用这招屏蔽了不少spam。