Heim > Artikel > Backend-Entwicklung > 如何利用.htaccess防盗链网站图片_PHP教程
防盗链网站图片顾名思义就是防止外部网站盗用我们网站的图片,它的作用就是防止其他人在其他的博客,空间网站里面贴上我们网站的图片从而导致访问者们没有进入我们的网站,但是还是耗费了我们网站空间的流量。这是不是非常的不爽?好了,下面我们就来看看如何利用.htaccess来防止别人盗链我们网站的图片吧!
利用.htaccess来防盗链图片其实很简单,只要你懂得.htaccess规则,也就一句话的事儿。下面我们来看一个完整的例子:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !phpernote.com [NC] RewriteCond %{HTTP_REFERER} !google.com [NC] RewriteCond %{HTTP_REFERER} !baidu.com [NC] RewriteCond %{HTTP_REFERER} !sogou.com [NC] RewriteCond %{HTTP_REFERER} !soso.com [NC] RewriteCond %{HTTP_REFERER} !youdao.com [NC] RewriteCond %{HTTP_REFERER} !yahoo.cn [NC] RewriteRule ^uploadfiles/(.*)\.(gif|jpg|png)$ http://www.phpernote.com/images/loading.gif [L]
下面对以上这段代码做一下详细的解释:
RewriteEngine On
url重写引擎开关,如果设为off,则任何重写规则定义将不被应用,该开关的另一好处就是如果为了临时拿掉重写规则,则改为off再重启动Apache即可,不必将下面一条条的重写规则注释掉。注意这条语句尽量写在文件的头一行。
RewriteBase /
这条语句的作用是如果在下面的rewriterule定义中被重写后的部分(此处为文件名index.html)。如果前面没有/,则是相对目录。一般直接设置为 / 意思就是根目录。
允许通过空的“HTTP_REFERER”的访问,即在用户在浏览器地址栏中直接输入图片地址的情况下图片是可以显示的。一般而言,这是可选的,不过,建议做如上设置,否则如果强迫必须具有“HTTP_REFERER”才能访问的话,可能会带来某些问题,比如说在用户通过代理服务器访问时。 RewriteCond %{HTTP_REFERER} !phpernote.com [NC] 这里设置的是允许访问的HTTP来源,这里包括我们自己的网站、google.com、baidu.com、sogou.com、soso.com、youdao.com、yahoo.cn。这也是为了让搜索引擎能正常的抓取我们的网站图片做考虑。 RewriteRule .*\.(gif|jpg|png|bmp)$ http://www.phpernote.com/change.gif [R,NC,L] OK,这里就是设置防盗链的规则了。这里的设置是让所有盗链本网站的 jpg、gif、png、bmp 等图片文件的网页,一律显示以 http://www.phpernote.com/change.gif 这个文件替代显示。特别需要注意的是:替换显示的图片不要放在设置防盗链的目录中或者包含在设置了防盗链的目录中,并且该图片文件体积越小越好。当然你也可以不设置替换图片,使用如下这样的规则,盗链的网站的图片将显示一篇空白 RewriteRule .*\.(gif|jpg|png|bmp)$ – [F] 另外如果你不明白上面的规则后面的中括号里面的 NC F L 的字符含义的话,请参照本站:.htaccess 语法参数说明 好了,经过以上的设置,所有盗链你网站的图片文件的网站,都将会因为这种不友好的显示而放弃盗链了,这在一定程度上减少了你的空间服务器不必要的流量,是一件值得去做的事情。
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !sogou.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
RewriteCond %{HTTP_REFERER} !youdao.com [NC]
RewriteCond %{HTTP_REFERER} !yahoo.cn [NC]