8797 sujets

Développement web côté serveur, CMS

Bonjour,
Voila mon "problème",

Sur mon site, j'aimerais aboutir à une réécriture d'url de cette maniere :
/titre-de-la-page,id.html

ça va donner .htaccess du genre :

RewriteEngine on
RewriteRule ^(.+),([0-9]+)\.html$  page.php?id=$2  [L]


la partie "titre-de-la-page" est la uniquement pour le référencement mais
j'aimerais quand même vérifier que "titre-de-la-page" est valide, histoire que
/mon-titre-d-article,5.html ne donne pas le même resultat /haha-c-est-marrant,5.html. Mais quelle technique pour faire ca ?

Je stock les urls dans une table de ma bdd ?
Dans un array ?

Merci de votre aide parce que je patauge la Smiley sweatdrop
Modifié par Yuk! (23 Oct 2008 - 16:50)
De toutes façons, tu dois stockée l'url nettoyée ( $1 dans ton pattern ) pour permettre de modifier son url nettoyée. (et pas forcément basée sur une modification du titre de l'article Smiley cligne
Si ton système d'url est bien fait tu ne devrais pas avoir besoin de passer l'id. Par contre, cela peut être interresant de passer les id des sections parents pour plus d'efficacité (ton-titre-1-15.html) ou 1 est ta rubrique principale et 15 la sous rubrique en cours.

Yuk! a écrit :
Je stock les urls dans une table de ma bdd ?
Dans un array ?

A mon avis c'est préférable pour plusieurs raisons : Si tu testes ton url sur ton champ titre celui si peut avoir des accents, des virgules, des numeros ou tout simplement être trop long pour un url.

Tu peux surement faire des regex complexes pour trouver l'équivalence mais du coup c'est nettement plus efficace un champ url.

Autre chose si ton url peut correspondre à plusieurs tables cela vat devenir super lourd de chercher dans toute les tables le titre correspondant a l'url en question.

Au moment de génerer ton url à partir de ton titre il faut tester si celle ci n'existe pas déjà, au quel cas mettre l'id de la page pour les différencier.
Modifié par matmat (24 Oct 2008 - 00:12)
Salut !

Moi perso, je met d'abord les informations type ID devant le texte "neutre".
Ma regex est donc =
RewriteRule ^page-8-?([0-9]+)?-?([0-9]+)?-?([a-zA-Z0-9._-]+)?.html$ ./blabla.php?page=8&id1=$1&id2=$2 [L]


Enfaite, je m'en fous de la fin de mon url Smiley cligne Qu'il y est la titre neutre ou rien cela ne change rien Smiley smile
Odd, mauvaise pratique, tu t'expose aux risques d'un "duplicate content"

matmat: il est préférable je pense, qu'il ait une colonne supplémentaire, style cleaned_title.
Calak a écrit :
matmat: il est préférable je pense, qu'il ait une colonne supplémentaire, style cleaned_title.


Oui tout a fait d'accord, en fait j'utilise même une table 'urls' comme ça :
id|table_name|id_page|url qui me permet de faire de l'url rewriting sur n'importe quel table de ma base para exemple 45|events|5|my-title-event ira chercher l'événement avec l'id 45 dans la page 5 avec my-title-event.html comme url. C'est rapide et super souple.

Ceci dit je trouve que la technique de Odd qui ressemble a celle utilisée sur ce forum est plutôt simple. Pour reprendre l'exemple de mon événement ça donnerais event-45-5-my-title-event.html c'est un peu plus long mais on évite une requête dans la base de donnée car on a pas besoin de stocker l'url.
Modifié par matmat (24 Oct 2008 - 00:56)