Urls Rewriting ou Urls propres sans toucher au fichier .htaccess

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

SPIP permet de d’activer la fonction de ré-écriture d’URLs, mais pour cela il faut pouvoir/avoir le droit d’utiliser un fichier .htacccess. Voici une solution alternative ne modifiant aucun fichier critique de SPIP.

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

Cette solution permet de n’avoir à ajouter QUE le fichier inc-urls-semi-propres.php3 et encore, ce n’est qu’une pâle copie du fichier d’origine inc-urls-propres.php3

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';
?>

A l’occasion je ferais des optimisations pour que le fichier inc-urls-semi-propres.php3 contienne moins de code redondant avec inc-urls-propres2.php3.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom