2011-12-28 1 views
0

私は私が望むものに近づいていますが、基本的には、サブディレクトリへの直接アクセスをブロックする必要がありますが、リダイレクトではなくカスタムエラーメッセージのように扱います。 index.phpファイルが要求されたファイル名を参照できるようにURLを維持し、それに対するサイトメンバーのアクセス許可をフィルタリングし、ファイル自体を返す必要があります。私は、拒否されたアクセスで403エラーを強制することができれば、ErrorDocumentが引き継ぐと思います。次の.htaccessは "files_dir"ディレクトリにあります。 ErrorDocumentsはすでにしばらくの間、私のために働いてきたが、拒否されたアクセスは、トラブルを与えている:.htacessはサブディレクトリへのアクセスを拒否しますが、URLを維持します(Force 403?)

<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

私は書き換えルールでこれに近づくでしょう:

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

これは、リダイレクトが発生することはありません(URLはブラウザにそのまま残りますが)403 Forbiddenが返されます。

+0

に私はそれが何らかの理由で動作させることができませんでした。しかし、あなたは私をこの解決策に導いてくれました。 RewriteRule^protected_dir($ | /) - [F] –

+0

すごくうれしいよ! – lvmisooners

0

なぜあなたは403を送信するには、Apacheをしないでください。あなたはPHPでそれを行うことができます。必要なのは、保護されたディレクトリ内のすべてのURLをindex.phpに書き換えることだけです。

RewriteRule ^protected_dir/ index.php 

その後、PHP

if(!$logged_in) 
{ 
    header('HTTP/1.1 403 Forbidden'); 
    echo 'not allowed. etc.'; 

... 
関連する問題