0

我有上传文件的文件夹,我需要其中的一个子目录作为受保护的目录,并在每次调用其中一个文件时检查用户权限。.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

4

1 回答 1

0

这似乎有效。重定向到 /uploaded_files.index.php 和 RewriteRule 上的 L [Last] 标志而不是 F [403] 标志

RewriteRule上的 RewriteEngine
^protected($|/) - [F]
RewriteRule ^protected($|/) /upload_files/index.php [L]


ErrorDocument 404 /uploaded_files/index.php
ErrorDocument 403 /uploaded_files/index.php
ErrorDocument 405 /上传文件/index.php

于 2012-05-01T21:11:50.317 回答