Empêcher les règles de réécriture d'URL d'être héritées par les sous-répertoires dans IIS7

J’ai une réécriture d’URL configurée pour des URL propres dans un CMS et mon web.config ressemble à ceci :

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Clean URLs" stopProcessing="true">
                    <match url="^([^/]+)/?$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="?id={R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Cela transforme essentiellement index.php?id=something en something pour des URL propres. Très simple et cela fonctionne bien.

Comme c’est courant dans les CMS, pour empêcher le back-end de casser, chaque sous-répertoire nécessite soit <remove name="Clean URLs" /> soit <clear /> dans son web.config pour que la règle ne soit pas héritée.

Existe-t-il un moyen de spécifier dans la règle parente qu’elle ne devrait pas être héritée par ses enfants en limitant d’une manière ou d’une autre la portée de la règle uniquement au répertoire actuel ? Quelque chose comme <rule name="Clean URLs" stopProcessing="true" inherit="no"> serait formidable.

J’ai trouvé la réponse après 4,5 heures de recherche sur Google !

http://runtingsproper.blogspot.co.uk/2010/04/solved-breaking-parent-webconfig.html

En tirant parti de :

<location path="." inheritInChildApplications="false">
    <system.webServer>
        <!-- ... -->
    </system.webServer>
</location>