.htaccess拒绝直接访问所有子目录和文件,但仍允许从网站内链接

时间:2016-12-28 20:35:08

标签: php .htaccess mod-rewrite

我们的网站./content/上有一个目录,其中包含一堆子目录,每个子目录都包含自己的子目录等。在这些子目录中,还有很多我们需要的.PDF文档防止某人直接访问,例如直接访问example.com/content/myfile.pdf。

我们在整个站点中引用了文件并通过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>

提前致谢。

1 个答案:

答案 0 :(得分:-1)

根据Farkie推荐的帖子进行一些修改后,这最终为我工作(因为我们想限制http和https,因此我们需要额外的HTTP_REFERER for https)。

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