2016-12-28 48 views
0

我们在我们的网站上有一个目录,./content/,其中包含一堆子目录,每个子目录都包含自己的子目录等等。子目录中还有很多.PDF文档,我们需要通过直接访问example.com/content/myfile.pdf来阻止某人能够直接访问。.htaccess拒绝直接访问所有子目录和文件,但仍允许从网站内链接

我们有整个我们的网站引用的文件,并通过Mozilla的PDF.js库加载,显然,我们需要能够让我们的PHP/HTML/JS文件能够访问它们,但只能从内部我们的域名。

我试图在我们的域根目录和内容文件夹中创建一个.htaccess文件来限制访问,但我仍然能够直接访问它们。这里的.htaccess的内容:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTP_HOST} ^example\.com$ 
    RewriteRule ^$ https://www.example.com/* [R=301,L] 

    RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC] 
    RewriteRule ^_content/[^.]+\.(jpe?g|gif|bmp|png|pdf)$ - [F,NC] 
</IfModule> 

在此先感谢。

+0

你或许应该通过PHP服务于它,而不是使用进行了检测 – Farkie

+0

http://stackoverflow.com/questions/10236717/htaccess-how-to-prevent-a-file-from-direct-url-访问 – Farkie

+0

我在参考文章中玩过几个答案,他们不适合我。恐怕我不知道'通过PHP提供服务'是什么意思? –

回答

0

对Farkie推荐的帖子进行了一些修改,最终为我工作(对https添加额外的HTTP_REFERER,因为我们想限制http和https)。

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example.com/.*$  [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$  [NC] 
RewriteRule .*\.(pdf)$ - [F,NC] 
相关问题