2010-09-22 6 views
27

J'utilise le module IIS7 UrlRewrite. J'ai mis en place mes règles dans la section web.config <system.webServer><rewrite>. Je veux savoir s'il existe un moyen de définir les règles dans un fichier xml externe au lieu du fichier web.config. Merci.Module urlrewrite IIS7 - Règles dans un fichier xml externe

+0

Pas que je sache. Pourquoi auriez-vous besoin de ça? – Remy

+3

@Remy: Réponse tardive, mais elle augmente la lisibilité du web.config lorsque vous avez beaucoup de règles de réécriture. C'est la raison pour moi quand même. – magnattic

+0

dans IIS> = 7,5 n'oubliez pas d'installer le composant URL Rewrite à partir d'ici https://www.iis.net/downloads/microsoft/url-rewrite –

Répondre

1

Vous pouvez utiliser l'URL d'exemple les fournisseurs Réécrire qui comprennent un pour stocker ceux dans un fichier séparé, voir: http://www.iis.net/learn/extensions/url-rewrite-module/using-custom-rewrite-providers-with-url-rewrite-module

+0

mais c'est pour les mappages. Config est utilisé à d'autres fins pour définir des règles personnalisées. parfois nous avons besoin d'utiliser une expression reg pour tous les mappages d'url dont nous avons besoin alors la seule façon est de l'inclure dans config. –

50

Oui, vous pouvez utiliser l'attribut configSource pour pointer vers un fichier externe comme vous pouvez avec d'autres sections web.config. Dans le web.config:

<rewrite> 
    <rules configSource="Rewrite.config" /> 
</rewrite> 

Et dans le fichier de configuration des règles:

<rules> 
    <rule name="some rule"> 
     <!-- rule details here ---> 
    </rule> 
</rules> 

Vous pouvez même utiliser encore le gestionnaire IIS pour modifier les règles et il vous reste plus qu'à travailler. Une petite mise en garde avec cette approche: lorsque vous apportez une modification et enregistrez un fichier externe comme celui-ci, il ne recyclera pas l'application comme si vous aviez modifié le fichier web.config. Par conséquent, si vous modifiez une règle et que vous souhaitez la voir prendre effet, vous devez rechercher manuellement le fichier web.config en effectuant une modification et en l'enregistrant. Une autre référence: Moving IIS7 url rewrite section out of the web.config file

+0

Êtes-vous sûr que l'application n'est pas recyclée pour des changements externes? Il existe une autre propriété sur les sections de configuration appelée [RestartOnExternalChanges] (http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.restartonexternalchanges.aspx) et elle est définie par défaut sur true. – magnattic

+0

@atticae Je crois que RestartOnExternalChanges ne s'applique qu'aux éléments

personnalisés, lesquels règles de réécriture ne le sont pas. http://forums.iis.net/t/1155629.aspx Je ne suis pas sûr si quelque chose a changé depuis, ce fil est à partir de 2009 ... –

+0

Malheureusement, IntelliSense dans Rewrite.config ne fonctionne pas. Y a-t-il un moyen de résoudre ce problème? –

Questions connexes