2017-05-11 5 views
1

J'essaye de faire une réécriture d'URL sur un certain chemin sur mon site qui contient l'application enfant dans le chemin. Le problème est que lorsque j'ai le nom de mon application enfant dans le chemin, la règle est ignorée.IIS URL Rewrite Module ignore la règle avec l'application enfant dans le chemin

J'ai donc la configuration IIS actuelle:

Root App (example.com) 
| 
|---Child App (mychild) 

Disons que le site est http://example.com

je peux accéder à l'application de l'enfant par l'intermédiaire http://example.com/mychild/...

Maintenant, je dois faire une règle de réécriture d'URL qui va attraper une URL spécifique qui est sous l'application enfant. Ainsi, par exemple cette aurait besoin d'être adapté:

http://example.com/mychild/folder1/method1 et réécrite à quelque chose d'autre

Quand je mets cette règle (le site racine web.config) mais (regex enlevé pour la simplicité), la règle n'est pas déclenché, il continue d'acheminer à l'application de l'enfant et les résultats dans un 404:

<rule name="rule1" enabled="true" patternSyntax="ExactMatch" stopProcessing="true"> 
    <match url="mychild/folder1/method1" /> 
    <action type="Rewrite" url="http://otherlocalserver" 
</rule> 

Si je change l'instance mychild dans l'attribut url à autre chose (ce n'est pas une application enfant), comme:

<match url="hello/folder1/method1" />

Ce: http://example.com/hello/folder1/method1sera partie.

Comment puis-je obtenir cette règle pour appliquer avant IIS pense que je veux qu'il utilise l'application child?

Répondre

0

L'application enfant fonctionne-t-elle comme un site Web distinct?

Ensuite, vous devriez faire le chemin de réécriture dans le bon fichier web.config. Si ce n'est pas le cas, il existe probablement une autre règle ciblant le chemin que vous essayez de cibler avec une balise stopProcessing = "true" (comme celle de la règle que vous avez publiée ici).