J'utilise IIS _ URL Rewrite et celui-ci m'a bloqué.
Je redirige une URL avec un sous-dossier spécifique vers une nouvelle URL.
par exemple. https://myapp.example.com/customsite1
redirigé vers https://newsite1-myapp.example.com
Si j'utilise ce motif:
^(.*)customsite1(.*)$
Ça fonctionne bien. Le problème est que des arguments ajoutés à l'URL peuvent également utiliser le mot customsite1
. Alors j'ai pensé "bien sûr, le moyen le plus simple de résoudre ce problème est de faire correspondre le fichier /customsite1
"
Mais ça ne marche jamais.
^(.*)/customsite1(.*)$
ne correspondra jamais https://myapp.example.com/customsite1
même si la fonction de motif de test l'indique.
Qu'est-ce que j'oublie ici?
Je suppose que vous faites référence au champ de correspondance du modèle d'URL, celui-ci:
Dans ce cas, les valeurs reçues commencent toujours sans le premier /
et n'incluent pas non plus les paramètres de chaîne de requête (si vous devez décisions basées sur la chaîne de requête, elle doit être traitée avec une règle de condition (à l'aide du champ {QUERY_STRING}
de l'entrée de condition).
Donc, si les arguments sont ajoutés à la chaîne de requête, cela ne devrait pas vous inquiéter du tout. Si les arguments que vous mentionnez font partie de l'URL, par exemple:
https://myapp.example.com/customsite1/action/param1/customsite1/param3
alors vous devriez utiliser une expression régulière semblable à celle-ci:
^customsite1(/.*){0,1}$
Cela correspond à "/ customsite1" avec ou sans la barre oblique finale et tout ce qui va après, et capture cette partie. Peu importe que des parties de l'URL ajoutent le même nom que le dossier principal que vous essayez de rediriger.
Dans le champ "URL de redirection" de l'action de redirection, vous pouvez écrire:
https://newsite1-myapp.example.com{R:1}
sans la dernière barre oblique puisqu'elle est capturée avec l'expression régulière et qu'il redirige la demande vers ce dossier vers le nouveau domaine, en ajoutant le reste de l'URL après votre dossier.
HTH