Apache 防盗链的第一种实现方法,能够用 rewrite 实现。首先要确认 Apache 的 rewrite module 可用:可以控制 Apache httpd.conf 文件的,打开 httpd.conf,确保有这么一行配置:web
LoadModule rewrite_module modules/mod_rewrite.so而后在找到本身网站对应的 配置的地方,加入下列代码:
ServerName xiaohui.com # 防盗链配置 RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://xiaohui.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://xiaohui.com$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.xiaohui.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.xiaohui.com$ [NC] RewriteRule .*\.(gif|jpg|swf)$ http://www.xiaohui.com/about/nolink.png [R,NC]防盗链配置的说明:
而后从新启动 apache 服务器便可。apache
有些用户使用的是虚拟主机,没有服务器的控制权,没法修改 httpd.conf 文件和重启服务器。那么请确认你的虚拟主机支持 .htaccess,将上面的配置写入 .htaccess 文件,放入根目录或图片所在的目录便可:浏览器
.htaccess 文件的内容: # 防盗链配置 RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://xiaohui.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://xiaohui.com$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.xiaohui.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.xiaohui.com$ [NC] RewriteRule .*\.(gif|jpg|swf)$ http://www.xiaohui.com/about/nolink.png [R,NC]注意:
另外一种方式是利用 SetEnvIfNoCase 和 access。具体的代码以下:服务器
SetEnvIfNoCase Referer "^http://xiaohui.com" local_ref=1 SetEnvIfNoCase Referer "^http://www.xiaohui.com" local_ref=1 Order Allow,Deny Allow from env=local_ref将上述代码,放入前面所讲的 httpd.conf 或 .htaccess 文件便可。
下面是引用木头同窗的:dom
位置通常状况下在 /usr/local/apache/conf/httpd.conf
或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
添加字体
- SetEnvIfNoCase Referer "^http://www.ccvita.com" local_ref=1
- SetEnvIfNoCase Referer "^http://ccvita.com" local_ref=1
- <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
- Order Allow,Deny
- Allow from env=local_ref
- </filesmatch>
其中粗体的是您的网址,若是有多个,就加多行
斜体的是您须要防盗链的文件后缀,中间用|隔开网站还一种写法,是用正则的,这种写法在各个版本的apache比较通用。
写法是ui
- SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref=1
- SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref=1
- <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
- Order Allow,Deny
- Allow from env=local_ref
- </filesmatch>
其中粗体的部分有一点区别,用正则写法, \ 符号表明转义,由于.自己在正则中有本身的做用。spa