|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
dljarod Nouveau WRInaute
Inscrit le: 22 Jan 2008 Messages: 7 Localisation: Liège, Belgique
|
Posté le : Mar Jan 22, 2008 15:00 Sujet du message: URL Rewriting avec titres textuels |
|
|
Bonjour à tous,
Je me lance dans l'URL rewriting. J'ai testé la solution suivante qui fonctionne parfaitement :
| Code: |
| 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: |
| 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

Inscrit le: 13 Juin 2005 Messages: 3866 Localisation: Exilé au Groland à cause de Joe Dalton
|
Posté le : Mar Jan 22, 2008 15:57 Sujet du message: URL Rewriting avec titres textuels |
|
|
| 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
Inscrit le: 22 Jan 2008 Messages: 7 Localisation: Liège, Belgique
|
Posté le : Mar Jan 22, 2008 16:05 Sujet du message: URL Rewriting avec titres textuels |
|
|
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

Inscrit le: 13 Juin 2005 Messages: 3866 Localisation: Exilé au Groland à cause de Joe Dalton
|
Posté le : Mar Jan 22, 2008 16:21 Sujet du message: URL Rewriting avec titres textuels |
|
|
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: |
RewriteRule ^([0-9]+)-(.*).html$ /test/cms/index.php?id=$1&titre=$2 [L]
|
|
|
| |
|
 |
dljarod Nouveau WRInaute
Inscrit le: 22 Jan 2008 Messages: 7 Localisation: Liège, Belgique
|
Posté le : Mar Jan 22, 2008 16:52 Sujet du message: URL Rewriting avec titres textuels |
|
|
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

Inscrit le: 13 Juin 2005 Messages: 3866 Localisation: Exilé au Groland à cause de Joe Dalton
|
Posté le : Mar Jan 22, 2008 17:24 Sujet du message: URL Rewriting avec titres textuels |
|
|
De rien.
Pas de souci : dans ta règle, tu ne fais pas mention de $1 :
| Code: |
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
Inscrit le: 22 Jan 2008 Messages: 7 Localisation: Liège, Belgique
|
Posté le : Mar Jan 22, 2008 17:43 Sujet du message: URL Rewriting avec titres textuels |
|
|
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  |
|
| |
|
 |
dljarod Nouveau WRInaute
Inscrit le: 22 Jan 2008 Messages: 7 Localisation: Liège, Belgique
|
Posté le : Mer Jan 23, 2008 11:14 Sujet du message: URL Rewriting avec titres textuels |
|
|
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

Inscrit le: 13 Juin 2005 Messages: 3866 Localisation: Exilé au Groland à cause de Joe Dalton
|
Posté le : Mer Jan 23, 2008 11:30 Sujet du message: URL Rewriting avec titres textuels |
|
|
| 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
Inscrit le: 22 Jan 2008 Messages: 7 Localisation: Liège, Belgique
|
Posté le : Mer Jan 23, 2008 11:32 Sujet du message: URL Rewriting avec titres textuels |
|
|
| 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
Inscrit le: 22 Jan 2008 Messages: 7 Localisation: Liège, Belgique
|
Posté le : Mer Jan 23, 2008 14:09 Sujet du message: URL Rewriting avec titres textuels |
|
|
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 ! |
|
| |
|
 |
| |
|
|