LAMP如何利用.htaccess防盗链?
什么是防盗链?
一篇精彩的原创博文,可能很快会被转载无数次。比如我的这篇《LAMP如何利用.htaccess防盗链》,咳咳,言归正传...有些转载者图方便直接复制粘贴到自己的网站或博客,如果文章中有图片,也会被一起转载,造成的流量损失会很惊人。因此喜欢在日志中加入本地上传图片的童鞋,保护自己的图片不被盗链还是非常重要的。
什么是.htaccess?
.htaccess是使用UNIX或Linux 搭建的服务器中的一个特殊的文件,这个文件只存在于Linux系统中,Win系列的主机是没有的。那么.htaccess有什么功能呢?通俗点的讲,就是可以通过编写这个文件中的某些内容,进而实现.htaccess文件所在目录及其子目录的权限与功能 的设置,是自己的站点灵活多变。
.htaccess有哪些功能?
- 重定向WordPress的RSS Feed链接地址到Feedburner地址;
- 使用浏览器缓存;
- 去除WordPress分类链接中的”/category/”;
- 阻止没有referrer来源链接的垃圾评论;
- 重定向日期格式的WP Permalink链接地址为Postname格式;
- 压缩静态数据;
- 阻止指定IP的访问;
- 只允许自己的IP访问wp-admin;
- 设置你的WordPress防盗链;
- 定制访问者跳转到维护页面;
今天我们主要说说如何利用.htaccess进行防盗链。
安装完成Wordpress程序,一般会在WP程序目录创建一个名称为.htaccess的文件,我们就是要用到这个.htaccess文件,如果没有可以自己创建一个。
里面的内容默认为:
1 2 3 4 5 6 7 8 9 10 |
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |
在</IfModule>上面添加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#目录 RewriteBase /wp-content/uploads/ #url输入是否显示资源 RewriteCond %{HTTP_REFERER} !^$ [NC] #对以下网址开放资源,可以链接 RewriteCond ${HTTP_REFERER} !27wy.cn [NC] RewriteCond %{HTTP_REFERER} !photozero.net [NC] RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC] RewriteCond %{HTTP_REFERER} !xianguo.com [NC] RewriteCond %{HTTP_REFERER} !google.com [NC] RewriteCond %{HTTP_REFERER} !google.cn [NC] RewriteCond %{HTTP_REFERER} !google.com.hk [NC] RewriteCond %{HTTP_REFERER} !feedburner.com [NC] RewriteCond %{HTTP_REFERER} !feedsky.com [NC] RewriteCond %{HTTP_REFERER} !baidu.com [NC] RewriteCond %{HTTP_REFERER} !sogou.com [NC] RewriteCond %{HTTP_REFERER} !sina.com [NC] RewriteCond %{HTTP_REFERER} !soso.com [NC] RewriteCond %{HTTP_REFERER} !bing.com [NC] #如果有人没经过允许盗链,则不显示图片 RewriteRule .*\.(jpg|jpeg|gif|bmp|png|swf|mp3|mp4|rar|swf)$ - [F] #如果有人没经过允许盗链,则显示某一张图片 #RewriteRule .*\.(jpg|jpeg|gif|bmp|png|swf|mp3|mp4|rar|swf)$ http://a1.qpic.cn/psb?/V127a2KD3MeZDl/tjp7IHh8Cpb1TOAzlb0fKSflkRTUaRLoXtuFn*OrZp4!/b/dLEAAAAAAAAA&bo=LAF4AAAAAAADB3c!&rf=viewer_4 [R,NC,L] #发现这样都不行,以后放到tomcat下试试看。 #RewriteRule .*\.(jpg|jpeg|gif|bmp|png|swf|mp3|mp4|rar|swf)$ /img/no-stealing.png [L] |
上面的注释也说的很详细了,防盗链,就是没有允许,防止你盗用资源(图片、音频、视频等),很恰当的一个比喻就是:你看到我这篇文章写得很好,直接复制粘贴,然后发布,如果里面有图片或者音频视频,那么这些资源全部来源于我的服务器,如果转载的人越来越多,那么我的服务器将会承载不住压力而崩溃,现在绝大多数网站都有防盗链的功能。好了,继续说防盗链...
有一点需要注意的是:防盗链的图片不要和资源放在一起,不然是无法访问你这张防盗链的图片的。
做完上面的步骤,我们还不能够防盗链。
我们还得找到apache的配置文件httpd.conf,我的目录在:/etc/httpd/conf/httpd.conf
找到这一段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<Directory "/webdata"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Require all granted </Directory> |
把里面的 None 改成 All
重启服务器,防盗链生效。
OK,我们的防盗链就完成了。
网上还有很多的说法
比如:在apache的配置文件httpd.conf中找到
#LoadModule rewrite_module modules/mod_rewrite.so
然后把前面的 # 去掉。问题是:里面根本没有这一段文本,里面只有这样一段文本
# LoadModule foo_module modules/mod_foo.so
如果做完上面两个步骤还不能够防盗链,可以试试把
LoadModule rewrite_module modules/mod_rewrite.so
添加到
# LoadModule foo_module modules/mod_foo.so
的下一行
再比如:找到httpd.conf 文件在末尾加上:
AccessFileName htaccess
反正我是没有做这一步,如果还不能防盗链,也可以试试这个。
好了,LAMP(Linux Apache Mysql PHP)的防盗链,我们就到此结束了
如果想了解nginx的防盗链,请关注我的下一篇博文。
态度决定一切,
细节决定成败,
目标决定方向,
行动决定未来。
发表评论