Ho una configurazione di riscrittura URL per URL puliti in un CMS e il mio web.config è simile al seguente:
<?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>
Fondamentalmente si trasforma index.php?id=something
in something
URL puliti. Molto semplice e funziona bene.
Come è comune nei CMS, per impedire la rottura del back-end, ogni sottodirectory richiede uno <remove name="Clean URLs" />
o <clear />
nel suo web.config, quindi la regola non viene ereditata.
Esiste un modo per specificare nella regola padre che non dovrebbe essere ereditato dai suoi figli limitando in qualche modo l'ambito della regola solo alla directory corrente? Qualcosa del genere <rule name="Clean URLs" stopProcessing="true" inherit="no">
sarebbe epico.