web-dev-qa-db-ja.com

.htaccessでサブフォルダーとファイルへのアクセスを拒否する

いくつかのサブフォルダーの下にある構成ファイルへのアクセスを拒否する必要があります。現在、私はこのルールを持っていますが、機能しません:

<Files ~ "((foo|bar))$">
  Order deny,allow
  Deny from all
</Files>

www.mysite.com/foo/foo2/file.xmlに移動すると、ファイルを表示できます。 fooおよびbarへのすべてのファイルアクセスを再帰的に拒否する必要があります

[〜#〜] update [〜#〜]

この構成を試しましたが、内部エラーが発生します

<FilesMatch ".foo\.(*)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>
1
hellb0y77

ファイルディレクティブの代わりにlocationを使用してみてください:

<Location "path/to/folder-or-file">
    Order Allow,Deny
    Deny from all
</Location>
2

Apache構成内で正規表現のマッチングを行います。次に

  • <DirectoryMatch>の代わりに<File>を使用します(ディレクトリで正規表現を照合します)
  • 正規表現の厳密さを修正します(具体的には$
  • 正規表現を単純化する(括弧が多すぎる)

    <DirectoryMatch "/path/to/toplevel/(foo|bar)">
        Order deny,allow
        Deny from all
    </DirectoryMatch>
    

/path/to/toplevel/は、foobarが存在するWWWディレクトリのファイルシステムの場所であることに注意してください。


ただし、.htaccessのみを介して実行する場合は、拒否するeveryディレクトリ(foo、bar、foo/barなど)に.htaccessファイルを作成します。線を引く

Deny from all

内部。

0
Drav Sloan

<Files> [...]は、指定されたファイル名と一致するベース名(ファイル名の最後のコンポーネント)を持つすべてのオブジェクトに適用されます」。それはあなたが望むものではありません。

Directory*.htaccessでは機能しません

mod_rewriteを使用する必要があります。例えば:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^(foo|bar) - [F]
</IfModule>
0
Mounaam