序文
私はウェブサーバーに関しては初心者です。私は、Apache2サーバーをセットアップして、現在、ドキュメントを熟読しています。
私は気づいた<Directory>
、<Location>
と<Files>
ディレクティブそれぞれ持って対応<*Match>
:ディレクティブ<DirectoryMatch>
、<LocationMatch>
および<FilesMatch>
それぞれ。表面上の違いは十分に明らかです:
<*Match>
ディレクティブは引数として正規表現を使用します- 非一致ディレクティブは、引数としてプレーンな文字列またはシェルスタイルのグロブを取ります。
奇妙なことに、非マッチディレクティブの前に「〜」が付いている場合、引数として正規表現を指定することもできます。したがって、次の2行は同一である必要があります。
# From the Apache2 docs
<Directory ~ "^/www/[0-9]{3}"> ... </Directory>
<DirectoryMatch "^/www/[0-9]{3}"> ... </DirectoryMatch>
ご質問
私が知りたいのは、Apacheのcore
ドキュメントで言及されていないことを知っておくべき微妙な違いや重要な違いがあるかどうかです。この<DirectoryMatch>
セクションでは、1つの微妙な違いについて説明しています。
互換性
2.3.9より前のバージョンでは、このディレクティブはサブディレクトリ(など
<Directory>
)に暗黙的に適用され、行末記号($)と一致できませんでした。2.3.9以降では、式に一致するディレクトリのみが囲まれたディレクティブの影響を受けます。
それを超えて、私は知りたいです:
- MatchディレクティブとNon-Matchディレクティブの間に他の違いはありますか?
- 正規表現が必要な場合、どのディレクティブがより望ましいですか?
- 他にあなたが適切だと思う情報はありますか?
ノート
<DirectoryMatch>
そして、<Directory "~">
同じであるマージレベル- 明示的に言及されていませんが、のように、
<Directory "~">
名前付きグループと後方参照を使用できます<DirectoryMatch>
。
<Directory ~
しますが<DirectoryMatch
、ではありません<Directory
。Apache 2.3.9まで<Directory ~
は、$
正規表現アンカーをサポートしていたため、おそらくスーパーセットでしたが、サポートして<DirectoryMatch
いませんでした。(これもDirectoryMatch
、以前のドキュメントで使用の推奨が削除された理由である可能性がありますか?)