如何禁用热链接并直接链接到我的网站上的文件?

好吧,我已经把我的头靠在墙上几个小时了,而这只是不起作用。 以下是我的.htaccess文件的内容。 我试图做的是阻止访问我的网站上的一组PDF和MP3文件,除非用户点击这些文件从我的网站的网页上的链接。

我看到的地方,代码基本上是我所使用的相同,它只是不工作。 我的问题是:

1)我做错了什么? 2)如果没有,我怎么才能debugging呢?

# BEGIN CustomRedirects RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC] RewriteRule \.(mp3|pdf)$ - [F,NC,L] # END CustomRedirects 

mp3和pdf不区分大小写,并启用mod_rewrite。 我在我的网站上安装了Wordpress,但它在树上的高级目录中,而不是.htaccess文件。 我从文档的印象是我的.htaccess文件应该优先,因为它位于我想要重写的目录。 如果我搞砸了这个.htaccess文件,我得到错误500,所以我只能假设它正在被读入。

我也尝试了以下,我从另一个服务器错误的问题,这也没有工作:

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

有人有主意吗?

更新:我也尝试了以下的RewriteRule没有效果。

 RewriteRule .*\.(mp3|pdf)$ - [F,NC,L] 

我发现的一件事是,如果我遗漏了RewriteCond %{HTTP_REFERER} !^$部分,它可以正常工作,但有些人仍然可以直接键入URL并获取文件。 这是我想要阻止的其他事情。

第一个摘录的问题可能是RewriteRule行。

你在哪里:

 RewriteRule \.(mp3|pdf)$ - [F,NC,L] 

也许你想要:

 RewriteRule .*\.(mp3|pdf)$ - [F,NC,L] 

因为我认为你正在匹配特定的文件'.mp3'或'.pdf'。 你想匹配'foo.mp3'或'bar.pdf'(用于改变foo和bar)。

在第二个节选..开始看起来怀疑。 我不知道为什么你需要SetEnvIf和SetEnvIfNoCase组合。 也许尝试这样的事情:

 SetEnvIf Referer "^http://(www\.)?mydomain.com/.*$" legit_referal SetEnvIf Referer "^$" legit_referal <LocationMatch "\.(pdf|mp3)$" > Order Deny,Allow Deny from all Allow from env=legit_referal </LocationMatch> 

你所描述的是绝对有可能的。 如果引荐来源与您自己的域名不符,则可以轻松返回403禁止的状态。

你也可以考虑这个选项: http : //www.alistapart.com/articles/hotlinking/

关于你当前的代码,我注意到你错误地错过了反斜杠\以逃避。 在mydomain.com