URL Rewriting avec titres textuels
11 messages • Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
URL Rewriting avec titres textuels
Bonjour à tous,
Je me lance dans l'URL rewriting. J'ai testé la solution suivante qui fonctionne parfaitement :
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 :
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
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

- Messages: 5329
- Inscription: Lun Juin 13, 2005 14:13
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 ?
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.
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

- Messages: 5329
- Inscription: Lun Juin 13, 2005 14:13
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:
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]
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é) ?
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

- Messages: 5329
- Inscription: Lun Juin 13, 2005 14:13
De rien.
Pas de souci : dans ta règle, tu ne fais pas mention de $1 :
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)
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)
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
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
-

nickargall - WRInaute accro

- Messages: 5329
- Inscription: Lun Juin 13, 2005 14:13
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 ?
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 !
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 !
11 messages • Page 1 sur 1
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 :
- Tutoriel URL Rewriting
- Suite de l'article sur le fichier .htaccess : l'URL rewriting
- l'URL Rewriting expliqué aux débutants
- Optimiser le référencement d'un forum phpBB : réécriture d'URL
- 3ème partie de l'article .htaccess : les réécritures conditionnelles
- L'URL Rewriting expliqué aux débutants
- Le référencement de pages PHP
- Ayez une bonne politique de format d'URL : conseil n°6 en référencement
- Guide d'optimisation des redirections pour le référencement
- Design de WRI version 3
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

le forum