Introduction
Normalement SPIP permet de d’activer la fonction de ré-écriture d’URLs via les fichiers du type inc-urls-….php3, le fichier mes-options.php3 et le fichier .htaccess.
inc-urls-….php3 : Ces fichiers définissent les règles de ré-écriture des URLs dans les pages du site, comme mettre le titre de l’article, concaténer le mot article et son n°…
mes-options.php3 : Ce fichier permet d’indiquer quel fichier de rewriting sera utilisé (html, propres, propres2, standard…)
.htaccess : Ce fichier va contenir (entre autres) les rêgles de redirection des URLs ré-écrites vers les articles/rubriques d’origine.
Le fonctionnement de la redirection SPIP appelée « propres » est le suivant :
URL saisie : http://monsite/titre-de-l-article.html
le fichier .htaccess redirige vers la page http://monsite/articles.php3?url_propre=titre-de-l-article
articles.php3 va alors chercher l’article ayant ce titre et rediriger finalement vers http://monsite/articles.php3?id_article=3
Le problème
Le problème est que certains hébergeurs (comme Free.fr) désactivent les fonctions avancées des fichiers .htaccess (pour des raisons de sécurité ou simplement pour ne pas permettre de faire des sites trop professionnel sur un hébergement gratuit).
Il faut donc trouver une alternative aux fichiers .htaccess et faire :
soit une redirection manuelle en PHP (cf La réécriture d’URL native de SPIP sans modifier la conf apache)
soit faire une ré-écriture « virtuelle » n’impactant pas les pages
Solution : la ré-écriture virtuelle
Le fichier suivant une variation de inc-urls-propres, qui garde articles.php3 ?id_article=.. dans l’URL mais qui ajoute titre=titre-de-l-article.
Le paramètre titre n’étant pas utilisé par SPIP, il est ignoré et ne sert donc qu’à l’affichage.
SPIP calculera alors ses liens sous la forme http://monsite/articles.php3?id_article=n_article&titre=titre-de-l-article.
Installation
Modifiez finalement le fichier ecrire/mes_options.php3 (ou créez le si besoin) avec le contenu suivant :
<?
$type_urls = 'semi-propres';
?>
Site d’exemple : celui-ci