.htaccess 如果直接访问文件夹则重定向

.htaccess redirect if folder accessed directly

文件夹结构:

myproject/
 documents/
   1/
    sample.pdf

我允许用户查看 .pdf 文件,但不允许在直接通过 url 访问时查看它。如果有人直接使用下面的 url 访问它,它会重定向到访问被拒绝的页面。

http://localhost/myproject/documents/1/sample.pdf

实现这个的代码是

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost .*$ [NC] 
RewriteRule \.(pdf)$ denied.php [L]

经过进一步测试,我发现虽然不允许直接访问文件,但用户仍然可以知道文件上传路径并可以导航到文档文件夹。

http://localhost/myproject/document/

其中列出了所有上传的文件。

如果使用 URL 直接访问 document 文件夹或 document 文件夹下的子文件夹,我该如何限制用户?

无论现在是否访问文件夹,文件夹内的文件都会显示。

您可以在 RewriteEngine 行 下方插入 以拒绝直接进入 /document URL:

RewriteCond %{THE_REQUEST} /document [NC]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [F]