※ ChatGPTを利用し、要約された質問です(原文:【Apache】<Files ~>と<FilesMatch>及び、<Directory ~>と<DirectoryMatch>の違いは?)
Apacheの<Files>と<FilesMatch>、<Directory>と<DirectoryMatch>の違いは?
このQ&Aのポイント
<Files>と<FilesMatch>、<Directory>と<DirectoryMatch>の違いは、同じ挙動をするようですが、正規表現の使い方が異なります。
<Files>と<FilesMatch>の違いは、前者が単一のファイルに対して適用され、後者は正規表現にマッチする複数のファイルに対して適用されます。同様に、<Directory>と<DirectoryMatch>の違いも、フォルダへの適用対象が単一か複数かの違いです。
Apacheのマニュアルでは、<FilesMatch>と<DirectoryMatch>の使用が推奨されています。また、正規表現の使用も可能で、拡張正規表現を使うこともできます。
【Apache】<Files ~>と<FilesMatch>及び、<Directory ~>と<DirectoryMatch>の違いは?
<Files ~ "(?i:\.ini|\.tmp)$">
Order Deny,Allow
deny from all
</Files>
と、
<FilesMatch "(?i:\.ini|\.tmp)$">
Order Deny,Allow
deny from all
</FilesMatch>
また、
<Directory ~ "^/www/.*/[0-9]{3}">
Order Deny,Allow
deny from all
</Directory>
と、
<DirectoryMatch "^/www/.*/[0-9]{3}">
Order Deny,Allow
deny from all
</DirectoryMatch>
は、
どうも同じ挙動をしているように思われます。
(違っていたらご指摘ください。)
Apacheのマニュアルには、
(http://httpd.apache.org/docs/2.0/ja/mod/core.html)
<Files> ディレクティブ の項目を見ると、
//===========================================================
~ という文字を付加することで拡張正規表現を使うこともできます。 例えば、
<Files ~ "\.(gif|jpe?g|png)$">
とすることにより、一般的なインターネットの画像フォーマットにマッチします。 ただし、 <FilesMatch> を使う方が 推奨されています。
//===========================================================
とあるのですが・・・。
(ただ、<DirectoryMatch> を使う方が 推奨されています。とは書いてないようです)
これら、
<Files ~>と<FilesMatch>及び、<Directory ~>と<DirectoryMatch>の違いは、
いったいなになのでしょうか?
ご存じの方いらっしゃいましたら、お教えいただければ幸いです。
お礼
お礼しわすれておりました。失礼しました。 参考にさせていただきます。