Syntaxe RewriteRule .htaccess

WRInaute occasionnel
Bonjour à tous,

je dois avoir un problème de syntaxe dans la ligne suivante :

RewriteRule ^occasion-([0-9]+)_([0-9]+)\.html$ listing_vehicules.php?etat=0&marque=$1&concession=$2 [L]

Car cela ne marche pas...

Ce que je cherche à faire, c'est réécrire les url du type :
listing_vehicules.php?etat=0&marque=18&concession=9
En : occasion-18_9.html
(J'ai pris marque=18 et concession=9 à titre d'exemple, ces id peuvent varier)

Quelqu'un aurait-il une piste svp ?
Merci beaucoup par avance.

Romain.
 
WRInaute impliqué
Ca doit donc faire une erreur 404.
Et quelle URL qui n'est pas trouvé ? l'URL recherché est-il bien ecrit ?
Ton script génère-il bien les nouveaux URL ?
 
WRInaute occasionnel
L'URL www.monsite.com/listing_vehicules.php?etat=0&marque=18&concession=9 existe et fonctionne oui.

Je cherche à la remplacer par www.monsite.com/occasion-18_9.html

Une fois la règle de réécriture rentrée dans mon fichier .htaccess, lorsque je me rend sur www.monsite.com/listing_vehicules.php?etat=0&marque=18&concession=9 l'url ne change pas, elle reste en l'état.
 
WRInaute impliqué
Romdev a dit:
www.monsite.com/listing_vehicules.php?etat=0&marque=18&concession=9 l'url ne change pas, elle reste en l'état.
Il serait totalement inactif donc ? C'est le plus bizarre..
Etonnant qu'il n'amène pas ni à une erreur 404 ni à une erreur 500
Il est bien placé ton .htaccess ? Il y a un seul htaccess ??

C'est donc le 1er terme qui serait inactif : RewriteRule ^occasion-([0-9]+)_([0-9]+)\.html$
Et en le remplaçant par : RewriteRule ^occasion-([0-9]*)_([0-9]*)\.html
 
WRInaute occasionnel
Il est bien placé oui, à la racine du serveur et tout seul, les autres règles de réécritures présentes dedans fonctionnent bien.

Ex : RewriteRule ^voiture-occasion,([0-9]+)\.html$ listing_vehicules.php?etat=0&page=$1 [L]

Cette règle fonctionne très bien.

Concernant mon problème, j'ai l'impression que ma règle de réécriture n'a absolument aucun effet.
J'enregistre et j'upload le .htaccess une fois la règle écrite, et quand je me rend sur le site il n'y a aucun changement, comme tu dis il n'y a même pas de 404 sur les url censées être réécrites. Je vais creuser ça aujourd'hui.

Merci pour ton aide en tout cas :)
 
WRInaute impliqué
Ca vient peut-être de là ?:

RewriteRule ^voiture-occasion ..... [L] sur une ligne
RewriteRule ^occasion .... [L] sur une autre ligne


Sinon, tant qu'on a pas vu le htaccess en entier....
 
WRInaute occasionnel
Je viens de faire un test, j'ai donc dans mon htaccess la ligne suivante :
RewriteRule ^occasion-([0-9]*)_([0-9]*)\.html$ listing_vehicules.php?etat=0&marque=$1&concession=$2 [L]

Lorsque je me rend sur l'url :
http://www.jmj-citroen.com/listing_vehicules.php?etat=0&marque=2&concession=4
Celle-ci devrait devenir :
http://www.jmj-citroen.com/occasion-2_4.html.

Pourtant si vous faites le test, vous verrez que l'url reste http://www.jmj-citroen.com/listing_vehicules.php?etat=0&marque=2&concession=4
 
WRInaute occasionnel
Voici des exemple de règles qui marchent, présentes dans le fichier (je peux pas tout copier/coller il y'en a trop) :

RewriteRule ^voiture-occasion-([a-zA-Z0-9\-]+),([0-9]+)\.html$ detail_vehicule.php?id_vehicule=$2 [L]
RewriteRule ^vehicules-utilitaires-([a-zA-Z0-9\-]+)_([0-9]+)\.html$ listing_vehicules.php?vu=1&concession=$2 [L]
RewriteRule ^promotions-([a-zA-Z0-9\-]+),([0-9]+)\.html$ promotions.php?concession=$2 [L]
 
WRInaute occasionnel
Merci pour l'info spout, mais dans le cadre de ce site là nous allons continuer avec les règles déjà présentes.

Par contre je garde ton conseil sous le coude pour un futur site :)
 
WRInaute passionné
Romdev a dit:
Je viens de faire un test, j'ai donc dans mon htaccess la ligne suivante :
RewriteRule ^occasion-([0-9]*)_([0-9]*)\.html$ listing_vehicules.php?etat=0&marque=$1&concession=$2 [L]

Lorsque je me rend sur l'url :
http://www.jmj-citroen.com/listing_vehicules.php?etat=0&marque=2&concession=4
Celle-ci devrait devenir :
http://www.jmj-citroen.com/occasion-2_4.html.

Non, c'est le contraire que tu as écris. Tu demande a transformer "occasion-*" en "listing_vehicules.php?.."
C'est plutôt dans l'autre sens qu'il faudrait écrire la règle :)
 
WRInaute impliqué
C'est normal , tu a inversé comme a écrit Arnaud. Et de toute façon, la réécriture ne se passe pas au niveau de l'URL visible dans la barre. La page sera trouvée ou pas.

Le résultat que tu veux obtenir patr le htaccess c'est listing_vehicules.php?etat=0&marque=2&concession=4 car il amène à la bonne page .

Il faut que ce soit ton script qui génére les URL "new look" comme http://www.jmj-citroen.com/occasion-18_9.html

et un htaccess les réécrira en listing_vehicules.php?etat=0&marque=18&concession=9
 
WRInaute occasionnel
Houla ça m'embrouille...

Je veux juste que lorsque quelqu'un tente d'accéder à
Code:
http://www.jmj-citroen.com/listing_vehicules.php?etat=0&marque=2&concession=4

L'url qui s'affiche dans le navigateur se transforme en :
Code:
http://www.jmj-citroen.com/occasion-2_4.html
 
WRInaute impliqué
Romdev a dit:
C'est plus clair !
Donc déja pour tester faut mettre http://www.jmj-citroen.com/occasion-2_4.html dans la barre d'URL

Et là, effectivement il y a une erreur 404.

Pour les test faut neutraliser dans le htaccess la redirection 404, comme cela tu verras l'URL recherchée

Mais est-tu sur que le script (rien à voir avec l'htaccess) génére bien les URL comme ceci : mj-citroen.com/occasion-2_4.html ??
 
WRInaute occasionnel
alaincassis a dit:
Mais est-tu sur que le script (rien à voir avec l'htaccess) génére bien les URL comme ceci : mj-citroen.com/occasion-2_4.html ??

Si je comprend bien la question, la réponse est non. A l'heure actuelle le script génère les url pleines de paramètres, que je souhaiterais justement remplacer par des URL propres pour mieux les référencer.
 
WRInaute impliqué
Romdev a dit:
alaincassis a dit:
Mais est-tu sur que le script (rien à voir avec l'htaccess) génére bien les URL comme ceci : mj-citroen.com/occasion-2_4.html ??

Si je comprend bien la question, la réponse est non. A l'heure actuelle le script génère les url pleines de paramètres, que je souhaiterais justement remplacer par des URL propres pour mieux les référencer.

Ok, donc avant de modifier le script faut faire des tests avec le htaccess, mais en désactivant la redirection erreur 404, pour connaitre l'URL demandée effectivement réécrite par le htaccess, et donc l'origine de l'erreur.

Et une fois que le rewriting htaccess fonctionnera bien avec les tests, tu pourras modifier le script afin qu'il génére les URL "propres".
 
WRInaute occasionnel
Entendu, je vais donc me pencher la dessus dans les prochains jours.

Juste pour parfaire ma compréhension de l'url rewriting, peut-on dire que c'est presque équivalent à une redirection ?
On redirige un type d'URL "sale" vers un type d'URL "propre" ?

RewriteRule urlpropre urlsale

Un peu comme :

RedirectPermanent badurl goodurl
 
WRInaute impliqué
Romdev a dit:
Entendu, je vais donc me pencher la dessus dans les prochains jours.

Juste pour parfaire ma compréhension de l'url rewriting, peut-on dire que c'est presque équivalent à une redirection ?
On redirige un type d'URL "sale" vers un type d'URL "propre" ?

RewriteRule urlpropre urlsale

Un peu comme :

RedirectPermanent badurl goodurl

C'est urlpropre-->urlsale et pas l'inverse !

C'est plus une traduction q'une redirection.
Je me répète:
1/ les URL propres doivent être génerées par le script ( faut faire les bonnes modifs au bon endroit ! ) .

2/ L'htaccess servira à traduire ces URL propres mais incompréhensible, en des URL "Sales " disons plutôt classiques, et compatibles PHP.

Un URL "propre n'a pas besoin de se terminer par .html
C'est une question de goût, mai moi je mettrai www.monsite.com/18-9-occasion tout simplement.

Et pour les tests, faut qu'en mettant à la main l'URL propre choisie, il faut que ce soit la bonne page qui apparaisse.
Rien ne se passera dans la barre d'URL.Elle affichera toujours l'URL propre.

Ensuite, si tout est ok, tu pourras faire les modifs de génération des URL dans le script.







2
 
Discussions similaires
Haut