¿MOD_Rewrite reescribe invoca una segunda ejecución a través de las reglas de reescritura?
-
04-07-2019 - |
Pregunta
Cuando una RewriteRule es ejecutada por MOD_Rewrite, ¿se ejecutarán nuevamente todas las reglas de MOD_Rewrite para la solicitud recién generada? Específicamente en el siguiente ejemplo, ¿causará esto un bucle?
RewriteCond Host: (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]
Solución
En su caso, no hará en ningún caso un bucle. Tienes el " L " enciende, arreglando esa regla particular como la última.
Además, tienes que forzar explícitamente la siguiente iteración usando la " N " o " NS " cambia, o simplemente se moverá a través de su archivo de reglas y se detendrá con la última regla que coincida. De los documentos:
N (Próxima iteración)
Fuerza el motor de reescritura para modificar reglas de destino y reinicio de la regla comprobando desde el principio (todo Se guardan las modificaciones). Número de reinicios está limitado por el valor especificado en el RepeatLimit directiva. Si se supera este número La bandera N simplemente será ignorada.
NS (Próxima iteración de la misma regla)
Funciona como la bandera N pero se reinicia procesamiento de reglas de la misma regla (es decir, fuerza de repetición de la regla solicitud). Número máximo de un iteraciones de una sola regla está dada por la Directiva RepeatLimit. Pero una serie de una sola regla se repite no cuenta para el número global de repeticiones (es decir, se repite el límite para una serie de iteraciones causadas por la bandera N es independiente de un número de repeticiones causado por NS).