.htaccess通过index.php脚本过滤子目录

时间:2012-04-30 14:41:52

标签: php .htaccess mod-rewrite http-headers

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

但是在实时服务器上,有些东西导致theese php标头被忽略:

header('Content-Type: some/mime');

和/或

header('Content-Disposition: attachment; filename="somefile.txt"');

我认为它可能是RewriteRule的强制403,但我使用它以便URL不会改变而index.php可以获得$ _SERVER [&#39; REQUEST_URI&#39;] < / p>

我还通过index.php

归档404

1 个答案:

答案 0 :(得分:0)

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

重写发动机 RewriteRule ^ protected($ | /) - [F]
RewriteRule ^ protected($ | /)/upload_files/index.php [L]


ErrorDocument 404 /uploaded_files/index.php
ErrorDocument 403 /uploaded_files/index.php
ErrorDocument 405 /uploaded_files/index.php