.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]
文件夹结构:
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]