Prefazione
Sono un neofita per quanto riguarda i server web. Sto configurando un server Apache2 e attualmente sto esaminando la documentazione.
Ho notato che il <Directory>, <Location>e <Files>direttive hanno ciascuno un corrispondente <*Match>direttiva: <DirectoryMatch>, <LocationMatch>e <FilesMatch>rispettivamente. La differenza sulla superficie è abbastanza evidente:
<*Match>le direttive assumono un'espressione regolare come argomento- Le direttive non match prendono come argomento una stringa semplice o un glob in stile shell.
Curiosamente, le direttive non-Match possono anche essere date come espressione regolare come argomento se precedute da un '~'. Pertanto, le seguenti due righe dovrebbero essere identiche:
# From the Apache2 docs
<Directory ~ "^/www/[0-9]{3}"> ... </Directory>
<DirectoryMatch "^/www/[0-9]{3}"> ... </DirectoryMatch>
Domande
Quello che mi piacerebbe sapere è se ci sono o meno differenze sottili o chiave da tenere presente che i coredocumenti di Apache non menzionano. La <DirectoryMatch>sezione menziona una sottile differenza:
Compatibilità
Prima della 2.3.9 , questa direttiva si applicava implicitamente alle sottodirectory (come
<Directory>) e non poteva corrispondere al simbolo di fine riga ($). In 2.3.9 e versioni successive , solo le directory che corrispondono all'espressione sono interessate dalle direttive allegate.
Oltre a ciò, vorrei sapere:
- Ci sono altre differenze tra le direttive Match e non Match?
- Quale direttiva è più preferibile quando è richiesta un'espressione regolare?
- Altre informazioni che ritieni pertinenti?
Appunti
<DirectoryMatch>e<Directory "~">sono allo stesso livello di unione- Sebbene non esplicitamente menzionato, è
<Directory "~">possibile utilizzare gruppi denominati e riferimenti secondari, proprio come<DirectoryMatch>.
<Directory ~e<DirectoryMatchnon<Directory. Fino ad Apache 2.3.9,<Directory ~era probabilmente il superset perché supportava l'$ancoraggio regex, mentre<DirectoryMatchnon lo era. (Questo potrebbe anche essere stato il motivo per cui la raccomandazione di utilizzare èDirectoryMatchstata rimossa nei documenti precedenti?)