.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文件给出了禁止的错误。 任何人都可以看到我在这个块中缺less的东西,或者有什么想法可能会导致这个?

诊断:如果你把一个只包含RewriteEngine on.htaccess发生了什么? 我们正在检查的是,是否存在古怪的服务器定义的规则,某人留下来躺在旁边,依靠RewriteEngineclosures来禁用它们。

评论显示这是事实。 真棒。 我唯一可以想到的就是告诉你尝试的是不使用mod_rewrite解决scheme,例如:

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

尝试:

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

试试这个,在我的服务器上工作正常:

 #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]