Apache的.htaccess可以实现很多功能,如密码保护、禁止显示目录列表、阻止/允许特定的IP地址、实现网址的301 重定向等等。
本文就来说说使用Apache的.htaccess如何防盗链。
当然防盗链可以用程序解决,如PHP:
$referer = $_SERVER['HTTP_REFERER']; $selfurl = $_SERVER['HTTP_HOST']; if(false == strpos($referer,$selfurl)){ echo 'itpwd.com防止非法盗链'; exit(1); }
使用Apache的.htaccess防盗链:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !itpwd.com [NC] RewriteCond %{HTTP_REFERER} !google.com [NC] RewriteCond %{HTTP_REFERER} !google.cn [NC] RewriteCond %{HTTP_REFERER} !google.com.hk [NC] RewriteCond %{HTTP_REFERER} !yahoo.com [NC] RewriteCond %{HTTP_REFERER} !bing.com [NC] RewriteCond %{HTTP_REFERER} !baidu.com [NC] RewriteCond %{HTTP_REFERER} !sogou.com [NC] RewriteCond %{HTTP_REFERER} !haosou.com [NC] RewriteCond %{HTTP_REFERER} !soso.com [NC] RewriteCond %{HTTP_REFERER} !so.com [NC] RewriteCond %{HTTP_REFERER} !sm.cn [NC] RewriteRule .*\.(gif|jpg|png)$ https://www.itpwd.com/nolink.jpg [R,NC,L] </IfModule>
.htaccess文件将影响其所在的目录及其子目录
上面这段代码也是很容易理解的:
RewriteCond %{HTTP_REFERER} !^$ [NC]
允许空的来源,即用户浏览器手动属于则允许访问文件。
RewriteCond %{HTTP_REFERER} !itpwd.com [NC]
允许站点自身访问,同理,后面还要允许百度,谷歌…访问。
RewriteRule .*\.(rar|zip)$ https://www.itpwd.com/ [R,NC,L]
这里可以设置防止盗链的类型,如果盗链可以跳转到网站首页
RewriteRule .*\.(gif|jpg|png)$ https://www.itpwd.com/nolink.jpg [R,NC,L]
做图片防盗链,如果你做图片防盗链可以设置被盗链的替代图片