Les réécritures MOD_Rewrite appellent-elles une deuxième exécution à travers les règles de réécriture?
-
04-07-2019 - |
Question
Quand une règle RewriteRule est exécutée par MOD_Rewrite, toutes les règles MOD_Rewrite seront-elles exécutées à nouveau pour la demande nouvellement générée? Dans l'exemple suivant, cela provoquera-t-il une boucle?
RewriteCond Host: (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]
La solution
Dans votre cas, cela ne fera en aucun cas une boucle. Vous avez le " L " allumez, fixant cette règle particulière comme la dernière.
De plus, vous devez forcer explicitement la prochaine itération en utilisant le "N". ou " NS " commutateurs, ou il suffit de parcourir votre fichier de règles et de vous arrêter avec la dernière règle correspondante. À partir de la documentation:
N (itération suivante)
Force le moteur de réécriture à modifier la règle de la règle et les règles de redémarrage vérifiant depuis le début (tous les modifications sont sauvegardées). Nombre de les redémarrages sont limités par la valeur spécifié dans le RepeatLimit directif. Si ce nombre est dépassé Le drapeau N sera simplement ignoré.
NS (itération suivante de la même règle)
Fonctionne comme le drapeau N mais redémarre traitement des règles à partir de la même règle (c'est-à-dire oblige à répéter la règle application). Nombre maximum d'un itérations de règle unique est donnée par le Directive RepeatLimit. Mais un certain nombre de une seule règle répète ne compte pas pour le nombre global de répétitions (c'est-à-dire répétition limite pour un certain nombre de itérations causées par le drapeau N est indépendant d'un certain nombre de répétitions causée par NS).