MOD_Rewrite riscrive invocare una seconda corsa attraverso le regole di riscrittura?
-
04-07-2019 - |
Domanda
Quando un RewriteRule viene eseguito da MOD_Rewrite, tutte le regole MOD_Rewrite verranno eseguite di nuovo per la richiesta appena generata? Nello specifico nell'esempio seguente, questo causerà un ciclo?
RewriteCond Host: (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]
Soluzione
Nel tuo caso, non farà comunque un ciclo. Hai il " L " accendere, fissando quella regola particolare come l'ultima.
Inoltre, devi forzare esplicitamente la successiva iterazione usando " N " o "NS" switch o si sposterà semplicemente attraverso il file della regola e si fermerà con l'ultima regola corrispondente. Dai documenti:
N (iterazione successiva)
Forza la modifica del motore di riscrittura target della regola e regole di riavvio controllando dall'inizio (tutti le modifiche vengono salvate). Numero di il riavvio è limitato dal valore specificato in RepeatLimit direttiva. Se questo numero viene superato La bandiera N verrà semplicemente ignorata.
NS (prossima iterazione della stessa regola)
Funziona come la bandiera N ma si riavvia elaborazione delle regole dalla stessa regola (vale a dire forza la ripetizione della regola applicazione). Numero massimo di a iterazioni a singola regola sono fornite da Direttiva RepeatLimit. Ma un certo numero di una singola regola si ripete non conta per il numero globale di ripetizioni (ad es. limite di ripetizioni per un numero di iterazioni causate da N flag è indipendente da un numero di ripetizioni causato da NS).