文件夹结构:
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]
经过进一步的测试,我发现虽然不允许直接访问文件,但用户仍然可以了解文件上传路径,并可以导航到docuemnt文件夹。
http://localhost/myproject/document/
它列出了所有上传的文件。
如果直接使用URL访问document
文件夹或document
文件夹下的子文件夹,我如何限制用户。
文件夹中的文件将显示出来,而不管现在是否进行文件夹访问。
您可以在RewriteEngine
行下方插入来拒绝直接进入/document
URL:
RewriteCond %{THE_REQUEST} /document [NC]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [F]