¿Qué significa $ 1 [QSA, L] en mi archivo .htaccess?


Respuestas:


215

No es el lugar para dar un tutorial completo, pero aquí está en resumen;

RewriteCond básicamente significa "ejecutar la siguiente RewriteRule solo si esto es cierto". La !-lruta es la condición de que la solicitud no sea para un enlace ( !significa no, -lsignifica enlace)

El RewriteRule básicamente significa que si la solicitud se hace que coincide ^(.+)$(coincide con cualquier URL excepto la raíz del servidor), se reescribirá, lo index.php?url=$1que significa que una solicitud ollese reescribirá como index.php?url=olle).

QSAsignifica que si se pasa una cadena de consulta con la URL original, se agregará a la reescritura ( olle?p=1se reescribirá como index.php?url=olle&p=1.

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

Para obtener más información sobre esto, siga los enlaces de arriba. El soporte de reescritura puede ser un poco difícil de entender, pero hay bastantes ejemplos de stackoverflow de los que aprender.


QSA reemplaza ?a &, por lo que es imposible distinguir entre /page&foobarvs /page?foobar. ¿Cómo puedo evitar que QSA reemplace ?a &?
Pacerier

8

Si se cumplen las siguientes condiciones, vuelva a escribir la URL:
Si el nombre de archivo solicitado no es un directorio,

RewriteCond %{REQUEST_FILENAME} !-d

y si el nombre de archivo solicitado no es un archivo normal que existe,

RewriteCond %{REQUEST_FILENAME} !-f

y si el nombre de archivo solicitado no es un enlace simbólico,

RewriteCond %{REQUEST_FILENAME} !-l

luego reescriba la URL de la siguiente manera:
Tome el nombre de archivo de la solicitud completo y proporciónelo como el valor de un parámetro de consulta "url" para index.php. Agregue cualquier cadena de consulta de la URL original como parámetros de consulta adicionales (QSA) y deje de procesar este archivo .htaccess (L).

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

Documentos de Apache #flag_qsa

Otro ejemplo:

RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]

Con la marca [QSA], una solicitud de

/ páginas / 123? uno = dos

será asignado a

/page.php?page=123&one=two


0

Esto capturará las solicitudes de archivos como version, releasey README.md, etc. que deben tratarse como puntos finales, si se definen (como en el caso de / release), o como "no encontrado".

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.