.htaccessを使用してサブフォルダとファイルへのアクセスを拒否する

.htaccessを使用してサブフォルダとファイルへのアクセスを拒否する

特定のサブフォルダーの下の構成ファイルへのアクセスを拒否する必要があります。現在、このルールはありますが機能しません。

<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ディレクトリがあるファイルシステムの場所です。foobar


ただし、経由でのみこれを行うには、次の.htaccess場所.htaccessにファイルを作成します。すべて拒否したいディレクトリ(foo、bar、foo / barなど)を入力し、次の行を入力します。

Deny from all

中。

関連情報