ISAPI Rewrite mise à niveau entre 2 et 3 - chaîne de requête non disponible?
-
23-08-2019 - |
Question
Un peu en retard, mais je viens de mettre de la version ISAPI Rewrite 2 à la version 3.
Je vais avoir des problèmes avec des règles dans le style suivant:
RewriteRule ^/seo-friendly/(\?(.*))? /test/index.cfm?page=home&$2
Ici, je veux tous les paramètres de chaîne de requête supplémentaire transmis à l'URL réécrite.
a bien fonctionné sous IR2 mais ne passe pas les paramètres supplémentaires dans IR3. Je possède les utilitaires testeur Regex .exe de chaque version alors j'ai essayé les.
Si j'entre / seo-friendly / bonjour = monde , le testeur de regex IR2 dit $ 1: bonjour = monde et $ 2: bonjour = monde Ce qui est parfait.
Mais dit de IR3 $ 0:. / Seo-friendly / et $ 1 et $ 2 sont vides
On dirait que je ne peux pas accéder à des variables de chaîne de requête.
J'ai trouvé ce drapeau mentionné dans la documentation:
O (Normaliser)
Normalise chaîne avant le traitement. comprend la suppression de la normalisation d'un URL-encodage, des caractères illégaux, etc. En outre, IIS normalisation d'un URI supprime complètement la chaîne de requête. Alors, la normalisation ne doit pas être utilisé si chaîne de requête est nécessaire
Mais je ne l'ai pas mis ce drapeau contre mes règles. Y at-il une règle globale que je peux mettre à mettre fin à cette (apparente) de normalisation?
La solution
Si ISAPI Rewrite fonctionne à peu près la même que celle mod_rewrite d'Apache, vous devriez juste besoin de mettre le drapeau QSA:
RewriteRule ^/seo-friendly/$ /test/index.cfm?page=home [QSA]