Je souhaite rediriger le trafic sur mon site Web en fonction de la règle suivante:
https://www.example.com/abc
-> https://www.example.com/test1.aspx?c=abc
https://www.example.com/def
-> https://www.example.com/test1.aspx?c=def
Je voudrais que le sous-dossier passe une chaîne de requête, j'ai essayé le code suivant mais malheureusement sans succès:
<rule name="Reditect1" stopProcessing="true">
<match url="^(.*)test.com/(.*)" />
<conditions>
<add input="{R:2}" pattern="^[a-zA-Z0-9_]*$" />
</conditions>
<action type="Redirect" url="/test1.aspx?c={C:0}" appendQueryString="true" />
</rule>
Ainsi, après plus de recherches et d'essais et d'erreurs, j'ai été capable de le comprendre. Voici comment je l'ai configuré maintenant.
<rule name="Redirect1" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{R:0}" pattern="^(?!\s*$).+$"/>
<add input="{R:0}" pattern="^[a-zA-Z0-9_]*$" />
</conditions>
<action type="Redirect" url="/test1.aspx?client={C:0}" appendQueryString="true" />
</rule>
NOTE
La règle a été configurée au niveau du site et non au niveau du serveur dans IIS. Par conséquent, la correspondance de modèle a ignoré le nom de domaine.
^(.*)test.com/(.*) - tried matching a test.com after the actual qualified domain name. So www.test.com/test.com/abc would satisfy the condition and not www.test.com/abc
Explication
La règle correspond à n'importe quelle URL entrant - Motif (. *)
La première condition garantit que tout ce qui suit le nom de domaine qualifié comporte au moins un caractère autre que l'espace.
La deuxième condition garantit qu'il n'y a pas de caractères spéciaux dans la partie en cours d'analyse. C'était mon exigence.