海天无影's Blog

伪静态.htaccess设置防盗链,及WordPress附件不能下载问题

/ 45评 / 0

前天海天送出BLOG的第一个下载的时候,经博友提醒不能下载。海天还以为前段时间设置的伪静态.htaccess防盗链,不能直接点击下载,得另存为的原因呢(因为海天用非IE浏览器另存为的确可下载)。可发现在IE下另存为下载也不行。于是找了几个博友的看了下,他们不管什么浏览器都能正常的直接点击下载,才肯定海天BLOG的设置有问题了。最终发现是WordPress的上传目录设置原因造成的,伪静态.htaccess防盗链设置后WordPress博客不能直接下载附件。

海天在查找原因的时候也参考不少朋友的.htaccess设置,找了一个比较好的,和大家一起参考下。

RewriteEngine On
#Anti-Leech For Image
RewriteCond %{REQUEST_URI} !^/outlink
RewriteCond %{REQUEST_FILENAME} \.(gif|jpg|jpeg|png)$ [NC]
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !blog\.haitianhome\.com [NC]
RewriteCond %{HTTP_REFERER} !google\.com [NC]
RewriteCond %{HTTP_REFERER} !baidu\.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky\.com [NC]
RewriteCond %{HTTP_REFERER} !yahoo\.com [NC]
RewriteCond %{HTTP_REFERER} !msn\.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner\.com [NC]
RewriteRule (.*)  http://htwy.org.ru/images/logo.gif [L,NC,R]

#Anti-Leech For File
RewriteCond %{REQUEST_URI} !^/outlink
RewriteCond %{REQUEST_FILENAME} \.(rar|swf|flv|zip|exe|7z)$ [NC]
#Anti-Leech For Right Save As
RewriteCond %{HTTP_REFERER} ^$ [NC]
RewriteCond %{HTTP_REFERER} !haitianhome\.com [NC]
RewriteRule (.*)  http://htwy.org.ru/images/logo.gif [L,NC,R]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

上面就是海天的.htaccess设置,可以看出。设置把图片和附件的防盗链分开了,这样的好处是,只把图片给那些搜索引擎抓取,因为图片被抓去(比如google的图片搜索)还是能给你的BLOG带来一些流量的。但附件就算被抓去了,也带来不了流量,反而可能被下载,那实在太不划算了。

其他.htaccess设置的属性,照葫芦画瓢,大家应该不难在添加自己想要的防盗链属性,比如多给几个自己网站使用权,或者添加防盗链的文件,以上设置都能很简单的自己添加。海天就不在这里多说了,下面来说说,为什么海天之前的附件不能直接点击下载。

早在之前,海天设置后台的时候,在“设置-杂项-默认上传路径”里没有设置,保存的是默认的“wp-content/uploads”,想不到就是因为这个默认设置造成海天的BLOG设置.htaccess防盗链后,不能直接点击下载附件,下载得到的文件为“附件名.htm”。

大家只要自己设置上传路径到根目录新建一个文件夹,就可以了。

按情况来说应该不是.htaccess设置的问题,因为上传的图片都能正常显示和防盗链。所以应该就出在WordPress上传路径默认设置的问题。反正海天重新设置后防盗链及下载一切正常。

RewriteEngine On
#Anti-Leech For Image
RewriteCond %{REQUEST_URI} !^/outlink
RewriteCond %{REQUEST_FILENAME} \.(gif|jpg|jpeg|png)$ [NC]
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !blog\.haitianhome\.com [NC]
RewriteCond %{HTTP_REFERER} !google\.com [NC]
RewriteCond %{HTTP_REFERER} !baidu\.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky\.com [NC]
RewriteCond %{HTTP_REFERER} !yahoo\.com [NC]
RewriteCond %{HTTP_REFERER} !msn\.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner\.com [NC]
RewriteRule (.*)  http://htwy.org.ru/images/logo.gif [L,NC,R]

#Anti-Leech For File
RewriteCond %{REQUEST_URI} !^/outlink
RewriteCond %{REQUEST_FILENAME} \.(rar|swf|flv|zip|exe|7z)$ [NC]
#Anti-Leech For Right Save As
RewriteCond %{HTTP_REFERER} ^$ [NC]
RewriteCond %{HTTP_REFERER} !haitianhome\.com [NC]
RewriteRule (.*)  http://htwy.org.ru/images/logo.gif [L,NC,R]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

发表评论

电子邮件地址不会被公开。