URL Rewriting avec titres textuels

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

dljarod
Nouveau WRInaute
 
Messages: 7
Inscription: Mar Jan 22, 2008 14:53

URL Rewriting avec titres textuels

Message le Mar Jan 22, 2008 15:00

Bonjour à tous,

Je me lance dans l'URL rewriting. J'ai testé la solution suivante qui fonctionne parfaitement :

Code: Tout sélectionner
RewriteRule ^([0-9]+).html$ /test/cms/index.php?id=$1 [L]


L'adresse à réécrire donne ceci : 10.html.

Je veux cependant avoir un titre plus parlant et je veux utiliser un titre qui est présent dans ma base de données. Je modifie donc le code pour avoir ceci :

Code: Tout sélectionner
RewriteRule ^([0-9]+)-([a-z]*).html$ /test/cms/index.php?id=$1&titre=$2 [L]


Mais ça ne fonctionne pas alors que la page réécrite contient bel et bien le titre. Quelqu'un voit-il où est le problème ?

Merci d'avance


nickargall
WRInaute accro
WRInaute accro
 
Messages: 5329
Inscription: Lun Juin 13, 2005 14:13

Message le Mar Jan 22, 2008 15:57

tu peux nous donner des exemples de titres et d'URL que tu souhaites obtenir ? Ya des majuscules ? des chiffres mélangés avec des lettres ?

dljarod
Nouveau WRInaute
 
Messages: 7
Inscription: Mar Jan 22, 2008 14:53

Message le Mar Jan 22, 2008 16:05

Salut, et merci pour ton aide.

En fait les titres sont des titres de pages dans le cadre d'un CMS où les clients peuvent ajouter des pages eux-mêmes. Logiquement ces titres devraient être juste composés de lettres mais prévoir que des chiffres puissent passer n'est peut-être pas une mauvaise idée. Dans l'état actuel des choses il y a des majuscules mais je peux m'en débarasser si elles posent problème.

Les adresses que j'obtiendrais avec le code ci-dessus s'il fonctionnait seraient du type 1-accueil.html mais j'aimerais avoir des adresses sans l'id et avec remplacement des espaces et apostrophes éventuelles par des tirets, donc quelque chose du genre nos-produits.html.

Voilà, j'espère que j'ai répondu à toutes tes questions.


nickargall
WRInaute accro
WRInaute accro
 
Messages: 5329
Inscription: Lun Juin 13, 2005 14:13

Message le Mar Jan 22, 2008 16:21

En ce qui concerne le remplacement des apostrophes, espaces ..., il te faudra gérer ça en amont, en PHP. Le .htaccess ne pourra pas le faire.

Sinon, ta règle pourrait fonctionner, mais tu ne spécifies que des lettres minuscules dans ton $2. Ca vient peut etre de là.

Essaie peut etre (.*) qui veut dire "tout" pour ton $2:
Code: Tout sélectionner
RewriteRule ^([0-9]+)-(.*).html$ /test/cms/index.php?id=$1&titre=$2 [L]

dljarod
Nouveau WRInaute
 
Messages: 7
Inscription: Mar Jan 22, 2008 14:53

Message le Mar Jan 22, 2008 16:52

Merci de ton aide, ça fonctionne.

Par contre comment faire pour ne prendre en compte que le deuxième paramètre ? Y a-t-il moyen de ne lui faire prendre en compte que le deuxième ou faut-il s'arranger pour que le premier n'affiche rien en lui disant d'interdire tous les caractères (j'ai essayé (.^) mais ça n'a pas marché) ?


nickargall
WRInaute accro
WRInaute accro
 
Messages: 5329
Inscription: Lun Juin 13, 2005 14:13

Message le Mar Jan 22, 2008 17:24

De rien.
Pas de souci : dans ta règle, tu ne fais pas mention de $1 :

Code: Tout sélectionner
RewriteRule ^(.*).html$ /test/cms/index.php?id=$1&titre=$2 [L]


Par contre tu t'exposes à un risque, si les deux titres sont les mêmes après transformation. L'avantage de l'identifiant dans l'URL est qu'il est unique (enfin je pense qu'il s'agit d'un identifiant unique)

dljarod
Nouveau WRInaute
 
Messages: 7
Inscription: Mar Jan 22, 2008 14:53

Message le Mar Jan 22, 2008 17:43

Quand je mets ce code, il se plante lors de l'affichage de la page à la requête SQL. La redirection fonctionne mais plus l'affichage de la page car il ne récupère plus l'id (qui effectivement est unique) mais le titre à la place.

De plus, lorsque j'essaye de mettre (-[a-z]*) pour afficher les tirets en plus des lettres, cela ne fonctionne pas non plus.

J'espère que je n'abuse pas de ton aide :oops:

dljarod
Nouveau WRInaute
 
Messages: 7
Inscription: Mar Jan 22, 2008 14:53

Message le Mer Jan 23, 2008 11:14

J'ai résolu le problème du tiret. Il fallait mettre ([-a-z]*) et pas (-[a-z]*).

Reste le problème consistant à enlever ignorer le premier paramètre...


nickargall
WRInaute accro
WRInaute accro
 
Messages: 5329
Inscription: Lun Juin 13, 2005 14:13

Message le Mer Jan 23, 2008 11:30

C'est sur que si l'affichage du contenu associé est basé sur la récupération de l'Id, si tu ne le fais pas passer, tu ne pourras pas afficher ton contenu. il te faudrait modifier le code d'affichage de la page pour qu'il aille chercher le contenu dans la base en se fiant au titre passé; bref, une usine à gaz avec beaucoup de paramètres à prendre en compte. Pouruqoi ne veux-tu pas faire passer l'identifiant unique dans ton URL ?

dljarod
Nouveau WRInaute
 
Messages: 7
Inscription: Mar Jan 22, 2008 14:53

Message le Mer Jan 23, 2008 11:32

Juste une question d'avoir une adresse la plus propre possible. Je préfère une adresse du type contact.html que 5-contact.html par exemple. Maintenant si ce n'est pas possible, je devrai bien m'y résoudre...

dljarod
Nouveau WRInaute
 
Messages: 7
Inscription: Mar Jan 22, 2008 14:53

Message le Mer Jan 23, 2008 14:09

J'ai trouvé la solution :

Pour ceux qui qui voudraient savoir comment :

Dans l'ajout et la modification des articles :

Code :

$titreclean = strtolower($_POST["txtTitre"]);
$remplacements = array(' ' => '-', '\'' => '-', 'é' => 'e', 'è' => 'e', 'à' => 'a', 'ù' => 'u', 'ê' => 'e', 'â' => 'a', 'ç' => 'c', 'û' => 'u', 'ô' => 'o', 'ë;' => 'e', 'î' => 'i', 'ï' => 'i', 'ü' => 'u');
$titreclean = strtr($titreclean, $remplacements);

Le titre clean s'enregistre dans un champ dédié de la base de donnée.

Dans l'affichage :

Code :

<li><a href="<?php echo $row["titreclean"] ; ?>.html"><?php echo $row["titre"] ; ?></a></li>

J'obtiens le titre retravaillé par l'URL rewriting suivant :

Code :

RewriteRule ^([-a-z]*).html$ /test/cms/index.php?titre=$1 [L]

Encore un tout grand merci !


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google AdSense

  • Analyse de popularité
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Transformer des simples citations de votre site en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités