web-dev-qa-db-ja.com

htaccess <Directory>すべてから拒否

私は最近、プロジェクトをクリーンアップしています。メインの.htaccessがルートディレクトリにあり、他に6つあります。それらのうちの5つはOptions -Indexesを実行しましたが、ディレクトリの表示を許可する意味がありませんでしたので、それをメインに移動しました。そのため、今では2つの.htaccessファイルしかありません。メインと/system内の1つ

# Block External Access
deny from all

だから私はメイン内からのみ/systemでそれを実行したかった。だから私は/システム内のものを削除して追加しました

 # Block External Access
<Directory "/system/">
deny from all
</Directory>

メインの.htaccessファイルに1を残します!

しかし、今私は

内部サーバーエラー

サーバーで内部エラーまたは設定ミスが発生したため、リクエストを完了できませんでした。

サーバー管理者webmaster @ localhostに連絡し、エラーが発生した時間と、エラーの原因となった可能性のあることを伝えてください。

このエラーに関する詳細情報は、サーバーエラーログで参照できる場合があります。

Apache/2.2.17(Ubuntu)サーバー、10.0.1.5ポート80

目標は、/ systemおよびそのサブディレクトリ内のファイルの読み取りをブロックすることですが、プロジェクト全体の1つの.htaccessファイルから他のすべてを表示できるようにすることです。これを修正する方法についてのアイデアはありますか?私はいくつかのGoogle検索をしましたが、実際には何も出ませんでした。

50
Keverw

.htaccessでは Directory directive を使用できません。ただし、/ systemディレクトリに.htaccessファイルを作成し、その中に以下を配置すると、同じ結果が得られます

#place this in /system/.htaccess as you had before
deny from all
81
Ulrich Palha

RedirectMatchディレクティブを使用して、フォルダーへのアクセスを拒否することもできます。

フォルダーへのアクセスを拒否するには、htaccessで次のRedirectMatchを使用できます。

 RedirectMatch 403 ^/folder/?$

これにより、/ folder /への外部アクセスが禁止されます。例: http://example.com/folder/ は、403禁止エラーを返します。

フォルダ内のすべてへのアクセスを拒否するには、これを使用できます:

RedirectMatch 403 ^/folder/.*$

これにより、フォルダ全体へのアクセスがブロックされます。例: http://example.com/folder/anyURI は、クライアントに403エラー応答を返します。

11
starkeen

ルートディレクトリから使用できます。

RewriteEngine On
RewriteRule ^(?:system)\b.* /403.html

または:

RewriteRule ^(?:system)\b.* /403.php # with header('HTTP/1.0 403 Forbidden');
1
Gigabiter