URL Rewrite base su WordPress con web.config e IIS 7.5

Premessa

Ormai la tecnica dell’url rewrite è utilizzata nella totalità dei framework/cms/ecommerce in circolazione e, oltre a consentire l’utilizzo di url più user (e search) friendly, è molto utile anche quando si tratta di redirezionare gli utenti su altre pagine in base a determinate condizioni.

Queste operazioni di riscrittura e/o redirezione sono gestite con delle espressioni regolari che consentono di “catturare” le url in ingresso e quindi di “trasformarle” e fare in modo che l’utenti arrivi (in modo nascosto con un rewrite o in modo esplicito con un redirect) alla risorsa desiderata.

Queste espressioni sono raggruppate in regole che vanno scritte in un formato opportuno e comprensibile al web server, che dovrà poi interpretarle e applicarle durante le richieste. In ambiente Windows, il Web Server IIS 7.5 della stessa Microsoft, richiede che tali regole siano inserite all’interno di un file di configurazione chiamato web.config, che consente tra l’altro l’impostazione di numerose opzioni di sistema (è praticamente l’equivalente del file .htaccess di Apache).

URL Rewrite per WordPress su IIS 7.5

Wordpress LogoWordPress (ma anche altri prodotti) hanno un sistema che consente di personalizzare il formato delle url degli articoli, perciò sarebbe poco pratico inserire una regola di rewrite per ciascuno schema di url supportato dal sistema (senza contare che poi queste regole dovrebbero essere scritte nei formati dei vari web server, in base a dove è ospitato il sito). Quindi la tendenza attuale – almeno quando si parla di framework cms & c. – è di demandare il cosiddetto routing delle url all’interno del sistema stesso: così facendo infatti per implementare l’url rewriting sul web server basterà istruirlo di rimandare tutte le richieste al file index principale.

Ed ecco come si presenta il file web.config che contiene tale configurazione:

<pre:brush=”xml”>

In pratica sto dicendo al sistema di intercettare tutte le url (*) e inoltrarle su index.php (che è il file principale di WordPress). La sezione “conditions” serve invece ad escludere da tale regola i file e le cartelle presenti fisicamente nella richiesta corrispondente. E questo è ovvio, perché se ho un’immagine, script, css o file che sia, mi aspetto che venga restituita dal web server, senza dover passare per il file index.php .

E questo è quanto, come sempre seguono delle utili risorse per chi volesse approfondire l’argomento (e se sei o aspiri ad essere un WebDev, dovresti assolutamente approfondire):

» Rewrite Engine
» Espressioni Regolari