2011-01-06 14 views
1

に私はhtdocsの中で次のディレクトリ構造を持っている:のApacheの.htaccessのRewriteCondディレクトリ

htdocs/ 
    .htaccess 
    index.php 
    foo/ 
    bar/ 
    priv/ 

私はきれいなURLを達成しようと基本的にすべてがindex.php経由でルーティングしたいんです。次のように私の.htaccessファイルは次のとおりです。

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f # <- referring to this next 
RewriteRule .* index.php [L] 

これは私が直接foo/bar/の内部正当なファイルにアクセスできるという意味ではうまく動作しますが、しかし、私はまた、私が欲しいものであるpriv/内のファイルにアクセスすることができますよ禁止する。どのように私は基本的に言う:上記の参照された行を変更するか "priv/でないファイルを無効にする"?


編集:私は「priv/.htaccess」を行うことを避けるためにしようとしている - >「deny from all」を、代わりに他の「かなりのURL」変換のようなindex.phpでこれを処理したいと思います。要求ができない場合のいずれかに一致部分パスがpriv/またはで始まる場合

さて、このルールが適用され
RewriteCond $0 ^priv/ [OR] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php [L] 

+0

こんにちは、私はすべてのアクセスを拒否するprivに追加の.htaccessを追加します。 –

答えて

6

あなただけ^priv/にマッチしてか、それを組み合わせることを条件に、別のRewriteCondを追加することができます既存のファイルにマップすることができます。

+1

ありがとう、それは完璧です。私は本当にApacheのドキュメントが簡単に見つけられればと思っています。 – k4rhlx

+0

@Gumbo、あなたは私がこのような古いトレッドをやり直すのを気にしないと、最初のRewriteCondの "$ 0"について少し詳しく説明しますか? RewriteRuleでのみ "$"を使うべきではありませんか? – Matte

+0

@Matte '$ 0'は、対応する' RewriteRule'のパターン全体の一致した文字列を参照します。 – Gumbo

関連する問題