Comment apache peut retrouver les variables dans l'url ?

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

Matizi
Nouveau WRInaute
 
Messages: 4
Inscription: Dim Oct 25, 2009 21:25

Comment apache peut retrouver les variables dans l'url ?

Message le Mar Nov 03, 2009 7:31

bonjour,

J'ai actuellement une ligne php :
Code: Tout sélectionner
echo "<a href=\"article-".$id."-".rewrite($nom).".html\">". $nom."</a>";


où la fonction rewrite formate la chaine de caractère pour une écriture URL propre (suppression des accents, des apostrophes etc.)

dans mon .htacces, j'ai cette ligne là :

Code: Tout sélectionner
RewriteRule ^article-([0-9]+)-([a-zA-Z0-9-]+)\.html$ /achat/article_details.php?id=$1 [L]


l'url "article-1-c-est-le-nom-de-l-article.html" est bien redirigée

Maintenant, j'aimerai que le mot "article" soit remplacé par la catégorie de l'article.

par exemple : "nom-de-ma-categorie-1-c-est-le-nom-de-l-article.html"

et là, c'est le drame.
J'ai essayé :

Code: Tout sélectionner
echo "<a href=\"".rewrite($cat['nom_fr'])."-".$id."-".rewrite($nom).".html\">". $nom."</a>";

avec RewriteRule
Code: Tout sélectionner
^([a-zA-Z0-9-]+)-([0-9]+)-([a-zA-Z0-9-]+)\.html$ /achat/article_details.php?id=$1 [L]


cela ne fonctionne plus.
Et j'ai une question subsidiaire : comment apache peut retrouver ses variables dans le bric a brac ([a-zA-Z0-9-]+)-([0-9]+)-([a-zA-Z0-9-]+) ? comment peut il savoir que -([0-9]+)- c'est l'id, puisqu'avant j'ai ([a-zA-Z0-9-]+)- ?

merci pour vos reponses.


forty
WRInaute impliqué
WRInaute impliqué
 
Messages: 481
Inscription: Jeu Oct 30, 2008 9:15

Re: Comment apache peut retrouver les variables dans l'url ?

Message le Mar Nov 03, 2009 9:15

$1 correspond au premier motif entre parenthèse : la catégorie dans ce cas. Deux solutions : mettre $2 ou supprimer les premières parenthèses qui ne servent à rien si tu ne veux pas mémoriser le motif pour le réutiliser.
Code: Tout sélectionner
RewriteRule ^[a-zA-Z0-9-]+-([0-9]+)-[a-zA-Z0-9-]+\.html$ /achat/article_details.php?id=$1 [L]


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12382
Inscription: Dim Aoû 08, 2004 20:24

Re: Comment apache peut retrouver les variables dans l'url ?

Message le Mar Nov 03, 2009 10:15

le problème, c'est que dans 2 motifs de recherches on trouve un tiret, alors qu'il est aussi en dehors du motif (séparateur de mot), et ça risque de donner des résultats pas toujours bon, surtout si dans le titre de l'article on trouve des chiffres


forty
WRInaute impliqué
WRInaute impliqué
 
Messages: 481
Inscription: Jeu Oct 30, 2008 9:15

Re: Comment apache peut retrouver les variables dans l'url ?

Message le Mar Nov 03, 2009 11:52

bien vu Leonick.
la règle la plus propre c'est (la première partie ne doit pas contenir de tiret) :
Code: Tout sélectionner
RewriteRule ^[^-]+-([0-9]+)-[a-zA-Z0-9-]+\.html$ /achat/article_details.php?id=$1 [L]

Matizi
Nouveau WRInaute
 
Messages: 4
Inscription: Dim Oct 25, 2009 21:25

Re: Comment apache peut retrouver les variables dans l'url ?

Message le Mar Nov 03, 2009 13:09

Merci forty et leonick.... je n'avais pas saisi le principe des parenthèses. :oops: C'est plus clair maintenant.

Cela fonctione bien avec la ligne
Code: Tout sélectionner
RewriteRule ^[a-zA-Z0-9-]+-([0-9]+)-[a-zA-Z0-9-]+\.html$ /achat/article_details.php?id=$1 [L]


mais pas avec la dernière
Code: Tout sélectionner
RewriteRule ^[^-]+-([0-9]+)-[a-zA-Z0-9-]+\.html$ /achat/article_details.php?id=$1 [L]

(la page indiquée n'existe pas)

Mais j'aurai forcement une catégorie avec plusieurs mot... par exemple : "nom-de-ma-categorie-1-c-est-le-nom-de-l-article.html"

mais je viens des tests en rajoutant un chiffre au milieu du nom de la catégorie, cela fonctionne bien
ex : nom-2-de-ma-categorie-1-c-est-le-nom-de-l-article.html
J'ai bien l'article 1 et non le 2 qui s'affiche.....
merci encore


forty
WRInaute impliqué
WRInaute impliqué
 
Messages: 481
Inscription: Jeu Oct 30, 2008 9:15

Re: Comment apache peut retrouver les variables dans l'url ?

Message le Mar Nov 03, 2009 14:04

ca marche avec ton exemple car il n'y a pas de numérique dans le nom de l'article mais ca ne marcheras pas avec : nom-2-de-ma-categorie-1-c-est-le-nom-de-3-l-article.html
il faudrai supprimer un "0-9" quelque part.

Matizi
Nouveau WRInaute
 
Messages: 4
Inscription: Dim Oct 25, 2009 21:25

Re: Comment apache peut retrouver les variables dans l'url ?

Message le Mar Nov 03, 2009 19:47

bah, t'as raison, ça marche pas si le numéro se trouve dans c-est-le-nom-de-l-article :?
mais pourtant si je suis ton exemple, il n'y a pas de parenthèses dans [a-zA-Z0-9-]+
l'id se trouve bien là : ([0-9]+) - qu'est ce qui fait que cela merdouille ?
Comme je suis le gars pénible, je peux avoir des chiffres dans la catégorie et le nom de l'article.
Comment faire ?
thanx


forty
WRInaute impliqué
WRInaute impliqué
 
Messages: 481
Inscription: Jeu Oct 30, 2008 9:15

Re: Comment apache peut retrouver les variables dans l'url ?

Message le Mar Nov 03, 2009 20:33

mets toi à la place d'apache et essaye de découper l'url nom-2-de-ma-categorie-1-c-est-le-nom-de-3-l-article.html
l'id peut-être l'un des 3 numéros. Les parenthèses n'ont aucune influence sur la découpe de l'url.
Il n'y a pas pas 36 solutions : il faut interdire soit les numéros soit le tiret dans la catégorie ou dans le nom de l'article. Une autre solution serait de changer de séparateur et de l'interdire dans la catégorie ou le nom de l'article. Tu peux par exemple remplacer le tiret devant l'id par un slash.


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12382
Inscription: Dim Aoû 08, 2004 20:24

Re: Comment apache peut retrouver les variables dans l'url ?

Message le Mar Nov 03, 2009 21:33

Attention à certains séparateurs, du genre la virgule, car de gros sites, comme Facebook ne les gèrent pas du tout et te tronque ainsi tes url

Matizi
Nouveau WRInaute
 
Messages: 4
Inscription: Dim Oct 25, 2009 21:25

Re: Comment apache peut retrouver les variables dans l'url ?

Message le Mer Nov 04, 2009 7:34

merci encore pour vos explications, c'est tout a fait clair. :D


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 :



Qui est en ligne

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