web-dev-qa-db-fra.com

Apache httpd.conf && .htaccess directives écrites en PCRE?

Je regarde la syntaxe des directives des fichiers de configuration Apache tels que httpd.conf && .htaccess et je dois dire que cela ressemble beaucoup à la syntaxe PCRE (qui correspond à Perl Compatible Regular Expressions).

Mais la syntaxe des directives est-elle vraiment une syntaxe d'expressions régulières?

Je ne suis pas très familiarisé avec les expressions régulières pour déterminer strictement et donc cibler la question vers des webmasters et/ou des programmeurs qui en ont maîtrisé ou ont acquis une expérience suffisante pour y répondre.

2
JohnDoea

il semble assez similaire à la syntaxe PCRE

Oui, de nombreux paramètres des directives Apache prennent des expressions régulières (regex) et la "saveur" de regex utilisée est bien PCRE.

Ceci s'applique à mod_rewrite et en fait à tout autre module Apache qui utilise regex.

Il y a quelques différences mineures (et ajouts) dans la syntaxe utilisée par Apache, mais ceci est principalement dû au fait qu'il n'y a pas de "délimiteurs" de regex (généralement /) pour marquer le début et la fin de la regex. besoin d'être (barre oblique inverse) échappé.

De plus, étant donné que des espaces sont utilisés comme délimiteurs dans les directives Apache, les espaces littéraux doivent être des barres obliques inverses insérées dans la regex elle-même. Ou bien, l'expression régulière peut être entourée de guillemets doubles.

Et comme il n'y a pas de délimiteurs de regex, il n'y a pas de modificateurs de motif , tels que i (par exemple. /regex/i) pour la casse Matchs insensibles. Au lieu de cela, il y a des drapeaux dans mod_rewrite, par exemple. NC (NOCASE) pour les correspondances insensibles à la casse.

En plus de la syntaxe normale, vous pouvez préfixer le motif avec ! pour nier la regex. Cela rend trivial de faire une expression véridique quand quelque chose ne correspond pas. mod_rewrite a également une référence arrière supplémentaire pour les groupes correspondants dans le RewriteCond CondPattern ie. %1 ainsi que $1.

Avec Apache 2.4, vous avez maintenant Expressions Apache , cela supprime les délimiteurs et les modificateurs de motif.

3
MrWhite