特定のサブフォルダーの下の構成ファイルへのアクセスを拒否する必要があります。現在、このルールはありますが機能しません。
<Files ~ "((foo|bar))$">
Order deny,allow
Deny from all
</Files>
に行くとwww.mysite.com/foo/foo2/file.xml
ファイルを見ることができます。foo
すべてのファイルアクセスを再帰的に拒否する必要があります。bar
修正する
この設定を試しましたが、内部エラーが発生します。
<FilesMatch ".foo\.(*)$">
Order Allow,Deny
Deny from all
</FilesMatch>
答え1
「<Files>
[...]は、指定されたファイル名と一致する基本名(ファイル名の最後のコンポーネント)を持つすべてのオブジェクトに適用されます。」あなたが望むものではありませんか?
Directory*
動作しない.htaccess
たとえば、次のものを使用する必要がありますmod_rewrite
。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(foo|bar) - [F]
</IfModule>
答え2
ファイルディレクティブの代わりに場所を試してください。
<Location "path/to/folder-or-file">
Order Allow,Deny
Deny from all
</Location>
答え3
Apacheの設定で正規表現のマッチングを行います。それから
<DirectoryMatch>
代わりに使用してください<File>
(ディレクトリで正規表現のマッチングを実行しています)。- 正規表現の厳格さを修正してください(具体的に
$
)。 正規表現を単純化します(括弧が多すぎます)。
<DirectoryMatch "/path/to/toplevel/(foo|bar)"> Order deny,allow Deny from all </DirectoryMatch>
これは/path/to/toplevel/
、WWWディレクトリがあるファイルシステムの場所です。foo
bar
ただし、経由でのみこれを行うには、次の.htaccess
場所.htaccess
にファイルを作成します。すべて拒否したいディレクトリ(foo、bar、foo / barなど)を入力し、次の行を入力します。
Deny from all
中。