wordpress图片防盗链设置

  • A+
所属分类:建博笔记

当我们发布的文章被其他网站转载时,部分网站为了图方便省事会直接复制我们的内容,如果文章中有大量的图片,也会被一起转载,这样会造成流量的损失。因此,防止图片被盗链就显得较为重要。

防盗链主要是防止从本地上传到服务器的图片不被其他网站直接使用,对于外链的图床、图片则无效。下面简单介绍一下wordpress图片防盗链的方法。

 

操作过程

首先,从网站根目录中下载.htaccess文件,如果没有这个文件,也可以自己创建一个。

打开该文件,默认文件内容是这样的:

  1. # BEGIN WordPress
  2. <IfModule mod_rewrite.c>
  3. RewriteEngine On
  4. RewriteBase /
  5. RewriteRule ^index\.php$ - [L]
  6. RewriteCond %{REQUEST_FILENAME} !-f
  7. RewriteCond %{REQUEST_FILENAME} !-d
  8. RewriteRule . /index.php [L]
  9. </IfModule>
  10. # END WordPress

然后在

  1. </IfModule>

前面添加下面的代码:

  1. RewriteBase /wp-content/uploads/
  2. RewriteCond %{HTTP_REFERER} !^$ [NC]
  3. RewriteCond %{HTTP_REFERER} !isdola.com [NC]
  4. RewriteCond %{HTTP_REFERER} !photozero.net [NC]
  5. RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
  6. RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
  7. RewriteCond %{HTTP_REFERER} !google.com [NC]
  8. RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
  9. RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
  10. RewriteCond %{HTTP_REFERER} !baidu.com [NC]
  11. RewriteRule .*\.(gif|jpg|png|rar)$ http://i.6.cn/96.png [L]

添加之后,整个内容就变成这样:

  1. # BEGIN WordPress
  2. <IfModule mod_rewrite.c>
  3. RewriteEngine On
  4. RewriteBase /
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteCond %{REQUEST_FILENAME} !-d
  7. RewriteRule . /index.php [L]
  8. RewriteBase /wp-content/uploads/
  9. RewriteCond %{HTTP_REFERER} !^$ [NC]
  10. RewriteCond %{HTTP_REFERER} !isdola.com [NC]
  11. RewriteCond %{HTTP_REFERER} !photozero.net [NC]
  12. RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
  13. RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
  14. RewriteCond %{HTTP_REFERER} !google.com [NC]
  15. RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
  16. RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
  17. RewriteCond %{HTTP_REFERER} !baidu.com [NC]
  18. RewriteRule .*\.(gif|jpg|png|rar)$ http://i.6.cn/96.png [L]
  19. </IfModule>
  20. # END WordPress

最后,将修改后的.htaccess文件覆盖空间原文件,并将其权限设置为:444只读。这既可以防止设置程序时被自动替换掉,还可以增加网站的安全性。

 

部分代码解释

  • 第8行代码
  1. RewriteBase /wp-content/uploads/

用来限制图片防盗链的范围,如代码中仅限制了/wp-content/uploads/目录下的图片不被盗链,则对于该目录(含子目录)以外的其他目录则无效。如果想要使整个网站的图片都不被盗链,则需要修改该行代码为:

  1. RewriteBase /
  • 第9行代码
  1. RewriteCond %{HTTP_REFERER} !^$ [NC]

表示如果访问图片的请求是用户通过地址栏直接输入地址的,则该图片正常显示。

  • 第10-17行代码
  1. RewriteCond %{HTTP_REFERER} !isdola.com [NC]
  2. RewriteCond %{HTTP_REFERER} !photozero.net [NC]
  3. RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
  4. RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
  5. RewriteCond %{HTTP_REFERER} !google.com [NC]
  6. RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
  7. RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
  8. RewriteCond %{HTTP_REFERER} !baidu.com [NC]

表示如果访问图片的请求是来自上面这些网站,则图片正常显示,否则就会显示为第18行代码中设定的替代图片,这个相当于白名单的意思。这个可以根据个人的实际情况增删代码。记得将isdola.com改成自己网站的域名。

  • 第18行代码
  1. RewriteRule .*\.(gif|jpg|png|rar)$ http://i.6.cn/96.png [L]

设置当图片被盗链时显示的替代图片。当图片被盗链后就无法正常显示了,此时可以设置一张替代的图片来代替原来的图片。后面的图片地址http://i.6.cn/96.png根据自己的需要修改。

需要注意的是,替代用的这张图片不能放在你设定防盗链的范围内。比如,你将图片防盗链范围设定为/wp-content/uploads/,那么这张替代用的图片就不要放在这个目录下,不然这张替代的图片也就不能正常显示了。如果你设定了整个网站的图片都不能被盗链,那么这张替代用的图片就需要使用外部链接了。

最后,需要说明的是本文描述的这个方法并不适合所有主机空间。如果你正常操作了,但发现图片还是被盗链,可能是因为你的主机空间不支持这个操作,也可能是对方网站做了反防盗链措施。对于这个问题,我也是力所不能及啊。

 

总结
  1. 根据个人情况设定第8行的图片防盗链范围
  2. 根据个人情况修改第10行的网站域名
  3. 根据个人情况增删第11-17行的图片防盗链白名单
  4. 根据个人情况修改第18行的图片防盗链用的替代图片
  5. 记得将替换后的.htaccess文件权限设置为444只读
  6. 本文描述的方法不适合所有主机空间

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: