Question Qu'est-ce que L dans [QSA, L] dans htaccess


QSA signifie que si une chaîne de requête est transmise avec l'URL d'origine,   il sera ajouté à la réécriture (olle? p = 1 sera réécrit comme   index.php? url = olle & p = 1.

L signifie que si la règle correspond, ne pas traiter plus de RewriteRules ci-dessous   celui-là.

Salut, quels sont des exemples faciles pour expliquer l'utilisation de L? Je ne peux pas sembler saisir cette explication ci-dessus. Toute aide sera grandement appréciée. Merci.


39
2018-05-09 18:00


origine


Réponses:


le QSA flag signifie ajouter une chaîne de requête existante après l'URI a été réécrit. Exemple:

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

Règle:

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

Résultat =/index.php?b=bar

Notez comment le q=blah est parti. Parce que la chaîne de requête existante est supprimée en faveur de celle de la cible de la règle (b = $ 1). Maintenant, si vous incluez un QSA drapeau:

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

Le résultat devient =/index.php?b=bar&q=blah


le L flag signifie simplement ne plus appliquer les règles qui suivent. Étant donné la même URL, http://example.com/foo/bar?q=blah, et compte tenu des règles:

RewriteRule ^foo - 

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

La première règle est appliquée et l’URI est transmise sans modification (via le - cible). Le moteur de réécriture traite alors la règle suivante et l'URI est réécrit /bar.php?z=foo/bar. Que se passe-t-il lorsque vous ajoutez un L jusqu'à la fin:

RewriteRule ^foo - [L]

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

L'URL http://example.com/foo/bar se transmet sans modification de la première règle, puis s'arrête en raison de l L drapeau. Si l'URL est http://example.com/something/else alors la première règle ne correspond pas et la seconde règle est appliquée, réécrivant l'URI à: /bar.php?z=something/else

Notez que comme le moteur de réécriture passe en boucle toutes les règles jusqu’à ce que l’URI ne change plus, le L drapeau sera ne pas empêchez la boucle, seules les règles supplémentaires seront appliquées dans l'itération en cours.


61
2018-05-09 18:32



Liste des drapeaux .htaccess

  • C (enchaîné avec la règle suivante)
  • CO = cookie (définir le cookie spécifié)
  • E = var: value (définir la variable d'environnement var sur valeur)
  • F (interdit - envoie un en-tête 403 à l'utilisateur)
  • G (parti - n'existe plus)
  • H = gestionnaire (gestionnaire de set)
  • L (dernières règles d'arrêt de traitement)

Dernière règle: demande au serveur d'arrêter la réécriture après le traitement de la directive précédente.

  • N (suivant - continuer les règles de traitement)
  • NC (insensible à la casse)
  • NE (n'échappe pas aux caractères d'URL spéciaux en sortie)
  • NS (ignore cette règle si la requête est une sous-requête)
  • P (proxy - c'est-à-dire qu'Apache doit récupérer le contenu distant spécifié dans la section de substitution et le renvoyer)
  • PT (pass through - à utiliser lors du traitement des URL avec des gestionnaires supplémentaires, par exemple, mod_alias)
  • R (redirection temporaire vers une nouvelle URL)
  • R = 301 (redirection permanente vers la nouvelle URL)
  • QSA (ajoute la chaîne de requête de la requête à l'URL substituée)
  • S = x (sauter les x règles suivantes)
  • T = mime-type (force le type mime spécifié)

Les drapeaux sont ajoutés à la fin d'une règle de réécriture pour indiquer à Apache comment interpréter et gérer la règle. Ils peuvent être utilisés pour indiquer à apache de traiter la règle comme insensible à la casse, d'arrêter le traitement des règles si la règle en cours correspond ou de diverses autres options. Ils sont séparés par des virgules et entre crochets.


40
2017-08-30 10:39