我有上传文件的文件夹,我需要其中的一个子目录作为受保护的目录,并在每次调用其中一个文件时检查用户权限。.htaccess 将调用 upload_files 目录中的 index.php 文件,同时维护 URL,以便 index.php 可以根据数据库检查文件,以查看登录用户是否具有文件的访问权限,如果有, index.php 将提供文件,用户不知道权限检查。
我实际上已经在我的开发服务器上使用上传文件目录本身的 .htaccess 中的以下代码完成了这项工作,
RewriteEngine on
RewriteRule ^protected($|/) - [F]
ErrorDocument 404 /uploaded_files/index.php
ErrorDocument 403 /uploaded_files/index.php
ErrorDocument 405 /uploaded_files/index.php
但是在实时服务器上,某些东西导致这些 php 标头被忽略:
header('Content-Type: some/mime');
和/或
header('Content-Disposition: attachment; filename="somefile.txt"');
我认为这可能是 RewriteRule 的强制 403,但我使用它是为了使 URL 不会更改并且 index.php 可以获得 $_SERVER['REQUEST_URI']
我还通过 index.php 过滤 404