J'ai besoin d'une regex qui correspondra à toutes les URL HTTPS sauf pour un certain chemin.
par exemple par exemple p>
C'est ce que j'ai jusqu'à présent: p > mais cela ne fonctionne pas p> p> ne correspond pas h2>
4 Réponses :
Je suis venu avec le motif suivant: ^ https: // [^ /] + (/ (?! Formulaire / | Formulaire $). *)? $ p> p> P>
^ code>: Match Begin of String Li>
https: // code>: correspondance
https: // code> li>
[^ /] + code>: correspond à quoi que ce soit, sauf avant, slash antérieure une ou plusieurs fois li>
( code>: Démarrer le groupe correspondant 1
/ code>: correspondez
/ code> li>
(?! code>: regard négatif
formulaire / code>: Vérifiez s'il n'y a pas de
formulaire / code> li>
| code>: ou li>
Formulaire $ code>: Vérifiez s'il n'y a aucun
formulaire code> à la fin de la chaîne li>
ul> li>
) code>: fin de lookahead négatif li>
. * code>: correspond à tout zéro ou plus fois li>
ul> li>
) code>: Fin correspondant Groupe 1 LI>
? code>: faire le jeton précédent en option li>
$ code>: correspondez fin de ligne li>
ul>
@Sniffer où et comment l'avez-vous testé?
Je l'ai testé en utilisant Expresso et fourni comme entrée l'URL qui n'est pas censée correspondre mais expresso a déclaré qu'elle est valide.
@Sniffer avant de l'afficher, je l'ai également testé. Demo1 Demo2 .
Eh bien, c'est vraiment étrange parce que j'ai testé les autres réponses Regex et cela a fonctionné mais le vôtre n'a pas.
Même si la regex de la question utilise "https?", Je pense que op ne veut pas le? Comportement de la correspondance HTTP aussi, puisqu'il déclare "correspondre à toutes les URL HTTPS" spécifiquement. Peut vouloir supprimer la marque QN là-bas.
@sundar je l'ai intentionnellement placé là-bas depuis qu'il l'avait eu dans son expression.
Désolé mon erreur, il ne devrait être que https
@Burt bien simple, il suffit de supprimer le ? Code>: p
Cela vous donne-t-il le comportement que vous recherchez? P>
Après le https ?: // [^ /] + ($ | / (?! Formulaires) /?.*$) Code> P>
www.domain.com code> Bit, il recherche la fin de la chaîne ou pour une barre oblique, puis quelque chose qui n'est pas
formulaires code>. < / p>
Je vois deux problèmes dans le motif publié Il manque les URL de redirection tels que Je pense que vous avez http et https inversé entre le motif et l'URL. Le motif doit avoir Cela fonctionnera peut-être comme vous souhaitez: P> http: // [^ /] + ($ | / (?! Formulaires) /?.*$) code>
https://domain.com/forms_instructions code>, car le motif ne parvient pas à correspondre à celles-ci également. p> li>
https code> et l'URL
http code>. p> li>
ul>
<rule name="Redirect from HTTPS to HTTP excluding /forms" enabled="true" stopProcessing="true">
<match url="^https://[^/]+(/(?!(forms/|forms$)).*)?$" />
<action type="Redirect" url="http://{HTTP_HOST}{R:1}" redirectType="Permanent" />
</rule>
Merci Sundar, il ne semble toujours pas fonctionner, je pense que c'est assez proche, tout simplement pas sûr de la raison pour laquelle il ne prendra pas la racine de mon domaine ( domain.com ) et redirige-le à l'équivalent HTTP
@Burt voulez-vous dire cela a fonctionné pour toutes les pages autres que le domaine root.com? Si oui, je serais effectivement surpris, car le {R: 0} dans l'URL de la redirection précédente aurait dû faire foiré les choses si je le comprends correctement. J'ai mis à jour le message avec quelques modifications, veuillez essayer cette version.
La manière dont le module de redirection fonctionne, vous devez simplement utiliser:
<rule name="Redirect from HTTPS to HTTP excluding /forms" stopProcessing="true"> <match url="^forms/?" negate="true" /> <conditions> <add input="{HTTPS}" pattern="^ON$" /> <add input="{HTTP_HOST}" pattern="^www.example.com$" /> </conditions> <action type="Redirect" url="http://{HTTP_HOST}/{R:0}" /> </rule>
L'URL correspondante a été posée cent fois. Mais oublions que chercher un duplicata et s'il vous plaît dites-nous quelle saveur vous utilisez?
Bonjour Hamza, j'ai essayé de trouver une regex qui correspond à mon exigence mais que je ne pouvais en avoir. J'utilise le module de réécriture URL IIS. La règle est de correspondre à tous sauf, qui est le bit délicat. Ce serait génial si vous pouviez aider, cela me gagnerait quelques heures de sommeil. Cela me fait fermer mais pas assez près Stackoverflow.com/Questtions/2277340/...
Que devrait empêcher le match exactement, quelles sont les règles d'une URL non valide?
Je veux attraper tout le trafic https et le rediriger à http à moins que l'URL HTTPS ne soit domaine.com/forms "/a > *
Il semble y avoir une erreur dans votre état, votre modèle dit "http?" au lieu de "https". Est-ce que la question peut-être?
Merci à tout le monde pour les réponses, apprécie vraiment l'aide