我一直接近我想要的东西,但我不在那里。基本上,我需要阻止直接访问子目录,但将其视为自定义错误消息而不是重定向。我需要维护URL,以便index.php文件可以查看请求的文件名,并过滤网站成员权限,然后返回文件本身。我想,如果我可以强制拒绝访问403错误,那么ErrorDocument将接管。以下.htaccess位于“files_dir”目录中。 ErrorDocuments已经为我工作了一段时间,但被拒绝的访问给了麻烦:
<Files ~ "^/files_dir/protected_dir/.*$">
Order allow,deny
Deny from all
Satisfy All
</Files>
ErrorDocument 404 /files_dir/index.php
ErrorDocument 403 /files_dir/index.php
ErrorDocument 405 /files_dir/index.php
答案 0 :(得分:1)
我会用重写规则来解决这个问题:
RewriteCond %{PATH_INFO} ^/files_dir/protected_dir/ [NC]
RewriteRule .* - [F]
这不会导致重定向(URL会在浏览器中保持不变),但会返回403 Forbidden。
答案 1 :(得分:0)
不要理解你为什么要apache发送403.你可以用php做到这一点。您唯一需要的是将受保护目录中的所有URL重写为index.php。
RewriteRule ^protected_dir/ index.php
然后在php
if( !$logged_in )
{
header('HTTP/1.1 403 Forbidden');
echo 'not allowed. etc.';
...