Combien de fois .htaccess est-il analysé et les directives RewriteRule exécutées?

C’est une question sortingviale mais je voulais vérifier.

Combien de fois le .htaccess exécuté?

 RewriteRule ^.*$ bla [L] RewriteRule bla foo [L] 

Si j’ai bien compris, le [L] arrête d’exécuter RewriteRule pour le rest du fichier, mais est-ce que tout recommence alors?

Cela peut sembler une question stupide, alors je m’excuse à l’avance, mais dans mon expérience très limitée avec l’écriture de RewriteRule , j’ai eu le sentiment que le fichier .htaccess est parfois analysé plus d’une fois.

Oui, les drapeaux L ne fonctionnent pas comme vous le pensez dans cet exemple. Comme le fichier .htaccess se trouve dans le contexte “par répertoire”, mod_rewrite crée un processus de sous-requête. Ce processus continuera à traiter les règles jusqu’à ce qu’il ne puisse plus être traité, ou il est interrompu comme dans votre exemple avec l’indicateur L.

Cependant, une réécriture ayant été déclenchée via la règle n ° 1, le moteur de réécriture créera une nouvelle sous-requête et parcourra à nouveau les règles .htaccess. Il répète ce processus tant qu’une réécriture se produit et ne transmet le traitement que lorsqu’il n’y a pas de réécriture.

Dans votre exemple, les drapeaux L ne font pas que ce que vous faites, ils ralentissent les choses en exigeant qu’Apache crée plusieurs sous-requêtes, plutôt que d’utiliser une seule sous-requête qui gère à la fois les règles et se termine.