rewriterule index htaccess flag files all .htaccess qsa

.htaccess - htaccess - rewriterule.*)$ index php r=$ 1 l



¿Qué es L en[QSA, L] en htaccess? (2)

QSA significa que si hay una cadena de consulta pasada con la URL original, se adjuntará a la reescritura (olle? P = 1 se reescribirá como index.php? Url = olle & p = 1.

L significa que si la regla coincide, no proceses más RewriteRules debajo de esta.

Hola, ¿cuáles son algunos ejemplos fáciles para explicar el uso de L? Parece que no puedo entender esta explicación arriba. Cualquier ayuda será muy apreciada. Gracias.


Lista de indicadores de .htaccess

  • C (encadenado con la siguiente regla)
  • CO = cookie (establecer la cookie especificada)
  • E = var: value (establecer var variable de entorno a valor)
  • F (prohibido: envía un encabezado 403 al usuario)
  • G (ya no existe)
  • H = controlador (controlador de conjunto)
  • L (reglas de procesamiento de última parada)

Última regla: indica al servidor que deje de reescribir después de procesar la directiva anterior.

  • N (siguiente - continuar las reglas de procesamiento)
  • NC (sin distinción de mayúsculas y minúsculas)
  • NE (no escape caracteres especiales de URL en salida)
  • NS (ignore esta regla si la solicitud es una subpetición)
  • P (proxy - es decir, apache debe tomar el contenido remoto especificado en la sección de sustitución y devolverlo)
  • PT (paso: uso al procesar URL con controladores adicionales, por ejemplo, mod_alias)
  • R (redirección temporal a una nueva URL)
  • R = 301 (redirección permanente a la nueva URL)
  • QSA (anexar cadena de consulta de solicitud a URL sustituida)
  • S = x (omita las siguientes x reglas)
  • T = mime-type (fuerza especificada tipo mime)

Las banderas se agregan al final de una regla de reescritura para indicarle a Apache cómo interpretar y manejar la regla. Se pueden usar para indicarle a apache que debe tratar la regla como insensible a las mayúsculas y minúsculas, para detener las reglas de procesamiento si coincide con la actual o una variedad de otras opciones. Están separados por comas y están entre corchetes.


La bandera de QSA significa agregar una cadena de consulta existente después de que se haya reescrito el URI. Ejemplo:

URL = http://example.com/foo/bar?q=blah

Regla:

RewriteRule ^foo/(.*)$ /index.php?b=$1

Resultado = /index.php?b=bar

Observe cómo el q=blah se ha ido. Porque la cadena de consulta existente se descarta a favor del objetivo de la regla, (b = $ 1). Ahora si incluye una bandera de QSA :

RewriteRule ^foo/(.*)$ /index.php?b=$1 [QSA]

El resultado se convierte en = /index.php?b=bar&q=blah

La bandera L simplemente significa dejar de aplicar las reglas que siguen. Dado el mismo URL, http://example.com/foo/bar?q=blah , y dadas las reglas:

RewriteRule ^foo - RewriteCond %{REQUEST_URI} !^/bar.php RewriteRule ^(.*)$ /bar.php?z=$1

La primera regla se aplica y el URI se pasa sin cambios (a través del - objetivo). El motor de reescritura procesa la siguiente regla y el URI se reescribe en /bar.php?z=foo/bar . Qué sucede cuando agregas una L al final:

RewriteRule ^foo - [L] RewriteCond %{REQUEST_URI} !^/bar.php RewriteRule ^(.*)$ /bar.php?z=$1

La URL http://example.com/foo/bar se pasa sin ser tocada por la primera regla, luego se detiene debido a la bandera L Si la URL es http://example.com/something/else entonces la primera regla no coincide y se aplica la segunda regla, reescribiendo el URI en: /bar.php?z=something/else

Tenga en cuenta que dado que el motor de reescritura recorre todas las reglas hasta que el URI deje de cambiar, la bandera L no evitará el bucle, solo se aplicarán otras reglas en la iteración actual.