WordPress e i permalinks su IIS
WordPress offre una funzionalita' comodissima per favorire l'indicizzazione dei contenuti da parte dei motori si ricerca: i permalinks.
Questa funzione, utilizzando il modulo mod_rewrite di Apache, permette di convertire gli URL dei post in indirizzi piu' "amichevoli" sia per chi legge che (sopratutto!) per i motori di ricerca.
In pratica, utilizzando i permalinks, un URL come questo:
diventa
http://oldsite.andreafortuna.net/2005/12/13/decodificato-il-filesystem-di-xbox360/
il tutto piu' leggibile sia da un utente che da un motore di ricerca.
Il tutto e' facilmente implementabile dalle opzioni di WordPress, ma con un limite: per utilizzare il mod_rewrite il blog deve essere necessariamente in hosting su server Apache.
Il mio blog invece e' hostato su server Microsoft IIS, come fare?
Dopo numerosi rimuginamenti e gironzolamenti su forum & newsgroups sono arrivato alla soluzione:
realizzare una pagina .php da utilizzare come error page personalizzata per gli errori di tipo 404 (file non trovato), intercettare quindi l'indirizzo richiesto e passarlo a index.php come farebbe il modulo mod_rewrite su Apache.
La realizzazione e' semplice:
- Creare una pagina nella root del sito (ad esempio wp-error.php), contenente il codice seguente
$my_wp_url = "http://" . $_SERVER['SERVER_NAME'] . ":80/";
$_SERVER['REQUEST_URI'] = substr($_SERVER['QUERY_STRING'], strpos($_SERVER['QUERY_STRING'], $my_wp_url)+strlen($my_wp_url));
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
//echo $_SERVER['PATH_INFO'];
include('index.php');
?>
- Modificare (tramite il pannello di controllo del proprio hosting o direttamente dalla console di IIS) la pagina di errore 404 in modo da farla puntare all'URL /wp-error.php.
- Attivare i permalinks dal pannello di amministrazione di WordPress.
L'unica eventuale modifica da fare allo script PHP e' la modifica della riga
$my_wp_url = "http://" . $_SERVER['SERVER_NAME'] . ":80/";
in
$my_wp_url = "http://" . $_SERVER['SERVER_NAME'] . ":80/indirizzo_blog/";
se il wordpress non e' installato nella root del sito (dove naturalmente /indirizzo_blog/ e' la cartella di installazione di WordPress).