Utilizzare i permalinks di wordpress su IIS

Configurando Wordpress su server Windows e IIS mi è capitato di imbattermi nella configurazione dei permalinks. Per poter utilizzare i permalinks, in generale, il server deve esser configurato con il mod_rewrite, che però non è supportato nativamente dai server Windows.

Anche se non è presente il mod_rewrite su server windows, wordpress permette comunque di utilizzare i permalinks, ma il risultato è leggermente diverso da una stessa installazione effettuata su Linux + Apache. Nella sezione Permalinks del pannello di WordPress è infatti possibile configurare i parmalinks che genereranno un indirizzo simile a questo:

/index.php/archives/%year%/%monthnum%/%day%/%postname%

WordPress aggirerà il problema passando gli argomenti alla pagina e mostrando nell’url index.php.

Facendo in pò di ricerche ho trovato sul sito WordPress Codex la soluzione a questo problema e quindi la possibilità di configurare IIS per supportare il mod_rewrite. La soluzione è semplice se il server gira con II6 + framework .net 3.5 o con II7.

Semplicemente, nella root del sito dove è installato WordPress, va inserito un file web.config contenente il seguente codice:

<rewrite>
    <rules>
        <rule name="Main Rule" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAll">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            </conditions>
            <action type="Rewrite" url="index.php/{R:0}" />
        </rule>
    </rules>
</rewrite>

Entrando poi nel pannello sarà possibile togliere la chiamata al file index.php abilitando la struttura Custom del permalinks.