您的位置:海南科技网首页 > 建站经验 > 正文

Apache服务器设置防盗链的方法

2017-04-18 18:48:41 来源:海南科技网 繁体中文 关闭 收藏 打印 复制

很多网站因为图片过多,图片被盗链后造成服务器无谓的负担,如果您是IIS服务器,请看《IIS服务器防盗链具体设置方法》现在给大家讲解一下如何利用Apache本身来设置防盗链。

首先,找到您的apache设置文件,一般情况下在 /usr/local/apache/conf/httpd.conf或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf,您可以酌情找到自己的conf文件,windows和freebsd下也一样,然后找到类似如下内容:

这个是discuz X2.5自带rewrite的规则


  1.  
  2. <VirtualHost *:80>
     
  3.     DocumentRoot /home/www
     
  4.     ServerName www.zhanhelp.com
     
  5.    <IfModule mod_rewrite.c>
     
  6.         RewriteEngine On
     
  7.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  8.         RewriteRule ^(.*)/topic-(.+).html$ $1/portal.php?mod=topic&topicid=$2&%1
     
  9.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  10.         RewriteRule ^(.*)/article-([0-9]+)-([0-9]+).html$ $1/portal.php?mod=view&aid=$2&page=$3&%1
     
  11.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  12.         RewriteRule ^(.*)/forum-(w+)-([0-9]+).html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3&%1
     
  13.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  14.         RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3&%1
     
  15.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  16.         RewriteRule ^(.*)/group-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=group&fid=$2&page=$3&%1
     
  17.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  18.         RewriteRule ^(.*)/space-(username|uid)-(.+).html$ $1/home.php?mod=space&$2=$3&%1
     
  19.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  20.         RewriteRule ^(.*)/blog-([0-9]+)-([0-9]+).html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3&%1
     
  21.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  22.         RewriteRule ^(.*)/(fid|tid)-([0-9]+).html$ $1/index.php?action=$2&value=$3&%1
     
  23. </IfModule>
     
  24. </VirtualHost>
复制代码

这个是不带rewrite的


  1.  
  2. <VirtualHost *:80>
     
  3.     DocumentRoot /home/www
     
  4.     ServerName www.zhanhelp.com
     
  5. </VirtualHost>
复制代码

在其中加入一段,具体内容如下:

  1. SetEnvIfNoCase Referer "^http://www.zhanehlp.com" local_ref=1
     
  2. SetEnvIfNoCase Referer "^http://zhanehlp.com" local_ref=1
     
  3. <FilesMatch ".(txt|doc|mp3|zip|rar|jpg|gif)">
     
  4. Order Allow,Deny
     
  5. Allow from env=local_ref
     
  6. </FilesMatch>
复制代码

其中站帮网的网站要更换成您的网址,如果有多个,就加多行;
txt|doc|mp3|zip|rar|jpg|gif的是您需要防盗链的文件后缀,中间用|隔开。

另外一种写法,是用正则,这种写法在各个版本的apache比较通用。具体写法如下:

  1. SetEnvIfNoCase Referer "^http://.*.zhanhelp.com" local_ref=1
     
  2. SetEnvIfNoCase Referer ".*.zhanhelp.com" local_ref=1
     
  3. <FilesMatch ".(txt|doc|mp3|zip|rar|jpg|gif)">
     
  4. Order Allow,Deny
     
  5. Allow from env=local_ref
     
  6. </FilesMatch>
复制代码

其中网址的部分有一点区别,用正则写法, 符号代表转义,因为.本身在正则中有自己的作用。

最终改完防盗链+伪静态规则后就会变成如下:

  1. <VirtualHost *:80>
     
  2.     DocumentRoot /home/www
     
  3.     ServerName www.zhanhelp.com
     
  4.     SetEnvIfNoCase Referer "^http://bbs.zb7.com" local_ref=1
     
  5.     SetEnvIfNoCase Referer "^http://zhanhelp.com" local_ref=1
     
  6.    <FilesMatch ".(txt|doc|mp3|zip|rar|jpg|gif)">
     
  7.        Order Allow,Deny
     
  8.        Allow from env=local_ref
     
  9.    </FilesMatch>
     
  10.    <IfModule mod_rewrite.c>
     
  11.         RewriteEngine On
     
  12.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  13.         RewriteRule ^(.*)/topic-(.+).html$ $1/portal.php?mod=topic&topicid=$2&%1
     
  14.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  15.         RewriteRule ^(.*)/article-([0-9]+)-([0-9]+).html$ $1/portal.php?mod=view&aid=$2&page=$3&%1
     
  16.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  17.         RewriteRule ^(.*)/forum-(w+)-([0-9]+).html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3&%1
     
  18.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  19.         RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3&%1
     
  20.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  21.         RewriteRule ^(.*)/group-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=group&fid=$2&page=$3&%1
     
  22.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  23.         RewriteRule ^(.*)/space-(username|uid)-(.+).html$ $1/home.php?mod=space&$2=$3&%1
     
  24.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  25.         RewriteRule ^(.*)/blog-([0-9]+)-([0-9]+).html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3&%1
     
  26.         RewriteCond %{QUERY_STRING} ^(.*)$
     
  27.         RewriteRule ^(.*)/(fid|tid)-([0-9]+).html$ $1/index.php?action=$2&value=$3&%1
     
  28. </IfModule>
     
  29. </VirtualHost>
复制代码

现在你的网站就可以彻底的仿制盗链了,其实discuz的后台附件设置也是可以设置防盗链的,只要设置附件链接有效期:8;下载附件来路检查:是即可,具体可以参考Discuz!附件上传设置方法和远程附件设置方法

  (来源:海南科技网)

版权声明:
1.本站登载此文仅出于传递更多信息,并不意味着赞同其观点或证实其描述,不承担侵权行为的连带责任。
2.如本网信息涉及版权等问题,请于发布起15个工作日内发送邮件与本网联系,我们将及时删除处理。

相关资讯: windows   article   thread   服务器   discuz

版权声明:
1.本站登载此文仅出于传递更多信息,并不意味着赞同其观点或证实其描述,不承担侵权行为的连带责任。
2.如本网信息涉及版权等问题,请于发布起15个工作日内发送邮件与本网联系,我们将及时删除处理。