2017-10-12 3 views
2

Supposons que nous ayons un fichier htaccess qui ressemble à ceci.Si un RewriteCond est vrai, Apache passe-t-il à nouveau par tout le fichier htaccess en commençant par le haut?

RewriteCond A 
RewriteRule 1 

RewriteCond B 
RewriteRule 2  

Si la condition B s'avère être vraie, alors RewriteRule numéro 2 sera exécuté. Est-ce que cela signifie qu'Apache va à nouveau parcourir tout le fichier htaccess, en commençant par le haut?

Si ce n'est pas le cas, alors y a-t-il un réglage qui le fera?

+1

Tant que toute réécriture s'est produite, le processus entier sera à nouveau démarré à partir du haut, lorsque la réécriture est configurée dans le contexte .htaccess. – CBroe

Répondre

1

Cela dépend des drapeaux, mais le flux de travail de base est comme ceci.

Dans votre exemple, si RewriteCond A correspond à cette dose, la RewriteRule 1 sera appliquée, car la règle elle-même doit également correspondre.

Mais si nous supposons que c'est le cas et que RewriteRule 1 correspond alors il s'appliquera.

maintenant sur les drapeaux en fonction il se pourrait que mod_rewrite va directement vérifier le groupe suivant RewriteCond/RewriteRule, dans votre cas RewriteCond B & RewriteRule 2 et l'appliquer aussi bien si tous les matches.

Si une règle est appliquée, mod_rewite prend le résultat et exécute la procédure de trou depuis le début jusqu'à ce qu'aucune règle ne s'applique plus. Les indicateurs communs qui vont influencer ce comportement sont [L] Last, [N] Next et [END].