.htaccessの特定の行がディレクトリリストの代わりに403を生成します。

.htaccessの特定の行がディレクトリリストの代わりに403を生成します。

WordPressインストールでは、.htaccessファイルはサブディレクトリにアクセスすると403エラーが発生しますfoo(サブディレクトリはWordPressインストールの一部ではありませんが、後で作成したものです)。たとえば、次のようなツリーファイルがあります。

/www
 |-wp-content/
 |-[all the stuff for wordpress]
 |-.htaccess
 |-foo/
   |-.htaccess

より具体的にエラーを引き起こす行はwww/.htaccess次のとおりです。

RedirectMatch 403 \.(cgi|asp|aspx|cfg|dll|exe|jsp|mdb|sql|ini|rar)$

この問題を克服するために、私は以下を作成しましたwww/foo/.htaccess

RedirectMatch 200 \.(cgi|asp|aspx|cfg|dll|exe|jsp|mdb|sql|ini|rar)$

しかし、その行がなぜ影響を与えるのか理解できませんfoo。サブディレクトリの名前は実際にはfoo(テスト用)、ディレクトリはです.htaccess

答え1

fooディレクトリに正規表現と一致するファイルがあるとします。

\.(cgi|asp|aspx|cfg|dll|exe|jsp|mdb|sql|ini|rar)$.リストされた拡張子の1つは、次のすべての項目と一致します。

したがって、fooディレクトリにbar.cgiそのパスがある場合は、パスのfoo/bar.cgi終わりが一致をトリガし、そのディレクトリが一覧表示されないようにします。

ガラスショーケースregex101のこの動作

関連情報