Préface
Je suis très néophyte des serveurs Web. J'installe un serveur Apache2 et examine actuellement la documentation.
J'ai remarqué que la <Directory>, <Location>et les <Files>directives ont chacune une correspondante <*Match>directive: <DirectoryMatch>, <LocationMatch>et <FilesMatch>respectivement. La différence en surface est assez apparente:
<*Match>les directives prennent une expression régulière comme argument- Les directives non-Match prennent comme argument une chaîne simple ou un glob de style shell.
Curieusement, les directives non-Match peuvent également recevoir une expression régulière comme argument si elle est précédée d'un '~'. Ainsi, les deux lignes suivantes doivent être identiques:
# From the Apache2 docs
<Directory ~ "^/www/[0-9]{3}"> ... </Directory>
<DirectoryMatch "^/www/[0-9]{3}"> ... </DirectoryMatch>
Des questions
Ce que j'aimerais savoir, c'est s'il y a ou non des différences subtiles ou clés à savoir que les coredocuments d'Apache ne mentionnent pas. La <DirectoryMatch>section mentionne une différence subtile:
Compatibilité
Avant la 2.3.9 , cette directive s'appliquait implicitement aux sous-répertoires (comme
<Directory>) et ne pouvait pas correspondre au symbole de fin de ligne ($). Dans 2.3.9 et versions ultérieures , seuls les répertoires qui correspondent à l'expression sont affectés par les directives jointes.
Au-delà, j'aimerais savoir:
- Existe-t-il d'autres différences entre les directives Match et non-Match?
- Quelle directive est plus préférable lorsqu'une expression régulière est requise?
- Avez-vous d'autres informations pertinentes?
Remarques
<DirectoryMatch>et<Directory "~">sont au même niveau de fusion- Bien qu'il ne soit pas explicitement mentionné, il
<Directory "~">peut utiliser des groupes nommés et des références arrières, tout comme<DirectoryMatch>.
<Directory ~et<DirectoryMatchnon<Directory. Jusqu'à Apache 2.3.9,<Directory ~était sans doute le sur-ensemble car il supportait l'$ancre regex, alors<DirectoryMatchque non. (C'est peut-être aussi la raison pour laquelle la recommandation d'utilisation aDirectoryMatchété supprimée dans les documents précédents?)