Accueil du site > SPIP, système de publication pour l’internet > Guide du webmestre et du bidouilleur SPIP > Mise en page : manuel de référence > Utiliser des URLs personnalisées

Utiliser des URLs personnalisées

mardi 1er mai 2001,

Par défaut, les pages générées par SPIP utilisent des adresses relatives ressemblant à article.php3?id_article=123, donnant des URLs du type http://www.minirezo.net/article.php3?id_article=123. Ce type de syntaxe, courant chez les sites « dynamiques », n’est cependant pas très joli ni très évocateur. Il y a possibilité d’avoir des adresses plus à votre goût - par exemple article123.html - , et SPIP vous aide en partie dans cette tâche.

Cette fonctionnalité fait appel à la distinction entre deux types d’URLs :

- l’URL apparente d’une page, c’est-à-dire telle qu’elle est tapée et/ou affichée dans la barre d’adresse du navigateur. Par exemple http://www.uzine.net/article765.html. Ce sont ces URLs qu’on cherche à rendre plus « jolies » ou plus « signifiantes » ;

- l’URL réelle de la page, c’est-à-dire l’URL qui est « vue » par SPIP lorsque la page est calculée sur le serveur. Par exemple http://www.uzine.net/article.php3?id_article=765 ; en général, cette URL peut aussi être tapée directement dans le navigateur (vous pouvez vérifier).

Choisir le type d’URLs apparentes

Le fichier inc-urls.php3 à la racine de SPIP, contient la déclaration d’une variable PHP contenant le type d’URLs à utiliser. Par défaut :

$type_urls = "standard";

Cette variable détermine le nom du fichier PHP qui est appelé pour gérer les URLs. Avec la déclaration par défaut ci-dessus, c’est inc-urls-standard.php3. Vous remarquerez qu’il y a aussi un fichier inc-urls-html.php3. Il permet de traiter des adresses du type de celles que nous avons prises comme exemple (« article123.html »). Vous pouvez donc décider d’utiliser plutôt ce fichier que le fichier « standard » en remplaçant la ligne sus-citée par la suivante :

$type_urls = "html";

Si vous voulez plutôt utiliser vos propres adresses (ce pour quoi vous devez savoir programmer en PHP), il est fortement conseillé de partir d’un des fichiers existants et de le recopier sous le nom que vous aurez choisi : inc-urls-XXX.php3.

Voyons maintenant les différents types de modifications à apporter.

Programmer la traduction des adresses apparentes en adresses réelles

Pour que l’adresse article123.html appelle bien en réalité le fichier PHP article.php3 avec comme paramètre id_article=123, il va falloir configurer le serveur Web qui héberge votre site, soit dans un fichier .htaccess (ça ne marche pas toujours), soit dans le fichier de configuration centrale du serveur si vous y avez accès. Cela utilise, sous le serveur Apache (le plus utilisé), ce qu’on appelle des Rewrite Rules : des règles de réécriture d’adresses Web.

Savoir écrire ces règles n’est pas simple pour les non-programmeurs, et nous ne pouvons pas vous donner de solutions infaillibles car cela dépend de votre configuration : cette partie est entièrement entre vos mains (ou celles de votre hébergeur).

Néanmoins et à titre d’exemple, voici les règles utilisées sur le site d’uZine :

(note si vous écrivez vos propres règles : utilisez toujours l’option [QSA] car l’adresse peut présenter des paramètres supplémentaires - comme lorsque vous appuyez sur le bouton « recalcul », affiché si vous placez le cookie d’administration ; l’option [L] signifie, quant à elle, que la réécriture s’arrête là si la règle est appliquée : Last)

Il est conseillé de tester la validité de ces adresses (en les essayant depuis votre navigateur) dès que vous avez mis en place la configuration correspondante, car sinon la suite ne servirait à rien.

Générer les URLs apparentes dans les pages SPIP

SPIP incorpore une fonctionnalité permettant de générer automatiquement les URLs du type que vous aurez choisi, à l’intérieur même des pages calculées par SPIP. Ainsi, les liens vers des articles seront par exemple générés sous la forme article123.html.

Les fichiers inc-urls-XXX.php3 sont là à cet effet. Si vous avez décidé de créer le vôtre propre, il va falloir programmer vous-mêmes la génération des URLs. Sinon, c’est déjà fait. Vous découvrirez qu’un certain nombre de fonctions PHP sont définies, dans le fichier, sous le nom generer_url_type d’objet (par exemple generer_url_article). Le rôle de ces fonctions devrait vous être évident pour peu que vous compreniez un minimum le PHP. A vous de les modifier à votre guise. A titre d’exemple, vous pouvez vous plonger dans le fichier inc-urls du Monde diplo.

Dans tous les cas, n’oubliez pas d’aller modifier le type choisi à l’intérieur de inc-urls.php3.

Enfin, dans vos squelettes, vérifiez que pour calculer les liens à l’intérieur des boucles, vous utilisez toujours les raccourcis #URL_ARTICLE, #URL_RUBRIQUE, #URL_BREVE, etc. Ce sont en effet eux qui déclenchent l’utilisation des fonctions évoquées ci-dessus, permettant la génération des « bonnes » URLs.

Vos commentaires

  • Le 20 juillet 2001 à 04:46, par adb

    Comment peut-on utiliser les urls personnalisées pour recréer une arborescence statique qui donne des urls signifiante, par répertoires, du type :

    http://monsite.com/rubrique/index.html
    http://monsite.com/rubrique/sous-ru...
    http://monsite.com/rubrique/sous-ru...

    Voire :

    http://monsite.com/2001/07/article1...

    http://monsite.com/dossiers/sujet/a...

    http://monsite.com/2.22/
    (façon Volume/Issue)

    Par ailleurs, je ne sais pas si c’est le bon forum pour ça, mais tant que j’y suis :

    Quelle serait la méthode pour utiliser SPIP pour un système de publication périodique par "volume.numéro" ?

    J’vais pas être très original, mais : "merci".

    • Le 20 juillet 2001 à 04:50, par adb

      (précision, cf. mon précédent message)

      Comment font-ils (cf. urls) sur le monde diplo ?

  • Le 24 août 2001 à 16:24, par iscandar

    voici un message pour utiliser les url html


    Bonjour

    Je viens d’essayer les rewrite rules proposées sur le site de
    SPIP (http://www.uzine.net/article765.html) pour avoir de
    jolie url. Aucun résultat.

    En regardant les logs, je me suis apperçu que le moteur
    rewrite essayer de matcher "article73.html" avec la
    règle "^(.*)/article(.*).html$". Donc cela ne marchait
    pas. Je suppose qu’il y a un réglage à faire quelque part.

    Finalement, j’ai utilisé les règles suivantes, qui marchent
    très bien chez moi :

    RewriteEngine On
    RewriteRule article(.*).html$ article.php3 ?id_article=$1 [QSA]
    RewriteRule rubrique(.*).html$ rubrique.php3 ?id_rubrique=$1 [QSA]
    RewriteRule breve(.*).html$ breve.php3 ?id_breve=$1 [QSA]

    Quelqu’un a-t-il réussi à utiliser les rewrite rule proposées
    dans la doc SPIP ?

    Michaël Parienti


    spip mailing list
    spip@rezo.net
    http://listes.rezo.net/mailman/list...

SPIP | | Plan du site | Suivre la vie du site RSS 2.0
Habillage visuel © Marcimat (CSS sous Licence GNU/GPL) / Jek a go go (Pictures sous Licence cc-nc-nd)