Comment apache peut retrouver les variables dans l'url ?
10 messages • Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
Comment apache peut retrouver les variables dans l'url ?
bonjour,
J'ai actuellement une ligne php :
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à :
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é :
avec RewriteRule
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.
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.
Re: Comment apache peut retrouver les variables dans l'url ?
$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]
Re: Comment apache peut retrouver les variables dans l'url ?
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
Re: Comment apache peut retrouver les variables dans l'url ?
bien vu Leonick.
la règle la plus propre c'est (la première partie ne doit pas contenir de tiret) :
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]
Re: Comment apache peut retrouver les variables dans l'url ?
Merci forty et leonick.... je n'avais pas saisi le principe des parenthèses.
C'est plus clair maintenant.
Cela fonctione bien avec la ligne
mais pas avec la dernière
(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
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
Re: Comment apache peut retrouver les variables dans l'url ?
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.
il faudrai supprimer un "0-9" quelque part.
Re: Comment apache peut retrouver les variables dans l'url ?
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
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
Re: Comment apache peut retrouver les variables dans l'url ?
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.
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.
10 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 :
- Tout pour indexer vos contenus dans Google
- Séminaire URL Rewriting et sites dynamiques
- Suite de l'article sur le fichier .htaccess : l'URL rewriting
- Article sur le fichier .htaccess
- Les contenus de Twitter indexés dans Google
- Hébergement de projets open source sur Google Code
- Google Web Toolkit, pour créer des applications en AJAX
- Le référencement de pages PHP
- Liste complète des produits et services de Google
- Référencement : le problème des sessions des pages PHP
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités





le forum