.htaccess 热链接阻止所有请求

.htaccess 热链接阻止所有请求

我想阻止网站上 PDF 文件的盗链。以前,我曾使用此方法阻止另一台服务器上 zip 文件的盗链。这是我的 .htaccess:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com/.*$ [NC]
RewriteRule \.(pdf)$ - [F,NC]

它的代码与我使用的另一个网站几乎相同,只是我用“zip”代替了“pdf”。出于某种原因,在这个 Apache 服务器上,它不仅阻止了 pdf,还阻止了所有内容。通过浏览器访问的 PHP 和 HTML 文件都给出了禁止错误。有人能看出我在这个块中遗漏了什么吗?或者知道是什么原因造成的?

答案1

诊断:如果您设置.htaccess仅包含会发生什么情况RewriteEngine on?我们正在检查是否有人留下古怪的服务器定义规则,依靠RewriteEngine关闭来禁用它们。

评论表明情况确实如此。太棒了。我能想到的唯一建议就是尝试不使用 的解决方案mod_rewrite,例如:

SetEnvIf Referer . hotlink=1
SetEnvIfNoCase Referer ^http://(www\.)?domain\.com/.*$ !hotlink
<LocationMatch *.pdf>
    Order allow,deny
    Deny from env=hotlink
    Allow from all
</LocationMatch>

答案2

尝试:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com/.*$ [NC]
RewriteRule .*\.pdf$ - [F,L]

答案3

尝试一下,在我的服务器上运行良好:

#Enables mod_rewrite, otherwise all Rewrite directives below will not work
RewriteEngine on

#Hotlink protection
RewriteCond %{HTTP_REFERER} !^http://mysite.com/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://mysite.com$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mysite.com/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mysite.com$      [NC]
RewriteRule .*\.(pdf|zip)$ - [F,NC]

相关内容