2011-12-28 71 views
0

我一直在接近我想要的東西,但我不是那裏。基本上,我需要阻止直接訪問子目錄,但將其視爲自定義錯誤消息而不是重定向。我需要維護URL,以便index.php文件可以查看請求的文件名,並根據它過濾站點成員權限,然後返回文件本身。我想,如果我可以強制拒絕訪問403錯誤,那麼ErrorDocument將接管。以下.htaccess位於「files_dir」目錄中。在出錯頁面已經爲我工作了一段時間,但拒絕訪問是給麻煩:.htacess拒絕子目錄訪問,但保持URL(強制403?)

RewriteCond %{PATH_INFO} ^/files_dir/protected_dir/ [NC] 
RewriteRule .* - [F] 

這不會導致重定向:

<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 

回答

1

我會重寫規則處理這(URL在瀏覽器中保持不變),但會返回403 Forbidden。

+0

我無法得到它出於某種原因。但是,你讓我知道這個解決方案。 RewriteRule^protected_dir($ | /) - [F] – 2011-12-28 18:50:33

+0

太棒了,很高興你能夠正常工作! – lvmisooners 2011-12-28 20:03:28

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

...