Pas l'endroit pour donner un tutoriel complet, mais le voici en bref;
RewriteCond signifie essentiellement "exécuter la prochaine RewriteRule uniquement si c'est vrai". Le !-lchemin est la condition que la demande ne concerne pas un lien ( !signifie non, -lsignifie lien)
Le RewriteRule signifie essentiellement que si la demande est faite qui correspond ^(.+)$(correspond à n'importe quelle URL sauf la racine du serveur), elle sera réécrite comme index.php?url=$1ce qui signifie qu'une demande ollesera réécrite comme index.php?url=olle).
QSAsignifie que si une chaîne de requête est passée avec l'URL d'origine, elle sera ajoutée à la réécriture ( olle?p=1sera réécrite comme index.php?url=olle&p=1.
L signifie que si la règle correspond, ne traitez plus les RewriteRules en dessous de celle-ci.
Pour plus d'informations à ce sujet, suivez les liens ci-dessus. La prise en charge de la réécriture peut être un peu difficile à comprendre, mais il existe de nombreux exemples sur stackoverflow pour apprendre.
QSA remplace ?à &, ce qui rend impossible de faire la distinction entre les /page&foobarvs /page?foobar. Comment puis-je empêcher QSA de remplacer ?en &?
Pacerier
8
Si les conditions suivantes sont remplies, réécrivez l'URL:
Si le nom de fichier demandé n'est pas un répertoire,
RewriteCond %{REQUEST_FILENAME} !-d
et si le nom de fichier demandé n'est pas un fichier régulier qui existe,
RewriteCond %{REQUEST_FILENAME} !-f
et si le nom de fichier demandé n'est pas un lien symbolique,
RewriteCond %{REQUEST_FILENAME} !-l
puis réécrivez l'URL de la manière suivante:
prenez le nom de fichier de la requête entière et indiquez-le comme valeur d'un paramètre de requête "url" à index.php. Ajoutez toute chaîne de requête de l'URL d'origine en tant que paramètres de requête supplémentaires (QSA) et arrêtez de traiter ce fichier .htaccess (L).
Cette capture les demandes de fichiers tels que version,
releaseet README.md, etc. , qui doivent être traités comme des points d' extrémité, si elle est définie (comme dans le cas de / libération), ou « non trouvé. »
Réponses:
Pas l'endroit pour donner un tutoriel complet, mais le voici en bref;
RewriteCond signifie essentiellement "exécuter la prochaine RewriteRule uniquement si c'est vrai". Le
!-l
chemin est la condition que la demande ne concerne pas un lien (!
signifie non,-l
signifie lien)Le RewriteRule signifie essentiellement que si la demande est faite qui correspond
^(.+)$
(correspond à n'importe quelle URL sauf la racine du serveur), elle sera réécrite commeindex.php?url=$1
ce qui signifie qu'une demandeolle
sera réécrite commeindex.php?url=olle
).QSA
signifie que si une chaîne de requête est passée avec l'URL d'origine, elle sera ajoutée à la réécriture (olle?p=1
sera réécrite commeindex.php?url=olle&p=1
.L
signifie que si la règle correspond, ne traitez plus les RewriteRules en dessous de celle-ci.Pour plus d'informations à ce sujet, suivez les liens ci-dessus. La prise en charge de la réécriture peut être un peu difficile à comprendre, mais il existe de nombreux exemples sur stackoverflow pour apprendre.
la source
?
à&
, ce qui rend impossible de faire la distinction entre les/page&foobar
vs/page?foobar
. Comment puis-je empêcher QSA de remplacer?
en&
?Si les conditions suivantes sont remplies, réécrivez l'URL:
Si le nom de fichier demandé n'est pas un répertoire,
et si le nom de fichier demandé n'est pas un fichier régulier qui existe,
et si le nom de fichier demandé n'est pas un lien symbolique,
puis réécrivez l'URL de la manière suivante:
prenez le nom de fichier de la requête entière et indiquez-le comme valeur d'un paramètre de requête "url" à index.php. Ajoutez toute chaîne de requête de l'URL d'origine en tant que paramètres de requête supplémentaires (QSA) et arrêtez de traiter ce fichier .htaccess (L).
Documents Apache #flag_qsa
Un autre exemple:
Avec l'indicateur [QSA], une demande de
sera mappé à
la source
Cette capture les demandes de fichiers tels que
version
,release
etREADME.md
, etc. , qui doivent être traités comme des points d' extrémité, si elle est définie (comme dans le cas de / libération), ou « non trouvé. »la source