如何防止直接访问文件但允许网页中的文件

时间:2016-10-20 15:28:53

标签: php apache .htaccess mod-rewrite

我试图使用mod.rewrite拒绝直接访问我的网络服务器上的文件,例如http://domain.tld/reports/imareport.pdfhttp://domain.tld/img/img1.png,我已经在这个问题上使用了答案:

(htaccess) How to prevent a file from DIRECT URL ACCESS?

该页面建议像这样使用mod.rewrite:

RewriteEngine on 
RewriteRule \.(png|pdf|htm)$ - [F]

以这种方式使用mod.rewrite可以很好地拒绝访问PDF,但是通常包含在页面中的其他文件(例如images和css)不仅被阻止直接访问,而且在网页上使用时也被阻止一个普通的<img>标签或其他什么。这与上面提到的问答相反。

所以...我的问题是......有没有办法阻止直接访问文件,但仍然可以在网页中使用它们?

1 个答案:

答案 0 :(得分:0)

感谢Mark Phillips,我并不完全理解这两个重写条件对我有什么影响:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]

所以我设法搞砸了他们。当我按原样使用代码时,事情就像需要的那样工作。