.htaccess拒绝子目录访问,但保持URL(Force 403?)

时间:2011-12-28 17:14:06

标签: .htaccess directory http-status-code-403

我一直接近我想要的东西,但我不在那里。基本上,我需要阻止直接访问子目录,但将其视为自定义错误消息而不是重定向。我需要维护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

2 个答案:

答案 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.';

...