Tengo una configuración de reescritura de URL para URL limpias en un CMS y mi web.config se ve así:
<?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>
Básicamente se convierte index.php?id=something
en something
URL limpias. Muy simple y funciona bien.
Como es común en los CMS, para evitar que se rompa el back-end, cada subdirectorio requiere <remove name="Clean URLs" />
o <clear />
en su web.config para que la regla no se herede.
¿Hay alguna manera de especificar en la regla principal que sus hijos no deberían heredarlo limitando de alguna manera el alcance de la regla solo al directorio actual? Algo así <rule name="Clean URLs" stopProcessing="true" inherit="no">
sería épico.