Rewriting et pseudos dossiers

  • Auteur de la discussion Auteur de la discussion gzav
  • Date de début Date de début
Nouveau WRInaute
Bonjour,

Je suis débutant en URL Rewriting et je bute depuis un moment sur un problème avec les pseudos dossiers (désolé si la question a déjà été posée mais je n'ai rien trouvé qui puisse m'aider)...

Dans mon site j'ai une page affichant des catégories de produits, ex :
Code:
http://www.ndd.com/ma_page.php?id_cat=4&actu=auto

J'ai mis en place une redirection pour avoir une url du style :
Code:
http://www.ndd.com/auto-frein-4/

Voici la règle écrite :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([^/]*)-([^/]*)-([0-9])/$ /ma_page.php?id_cat=$3&actu=$1 [L]

Cette règle fonctionne à ceci près que lorsque je clique sur un lien pour afficher une autre catégorie, la nouvelle url écrite "s'ajoute" à la précédente, comme ceci :
Code:
http://www.ndd.com/auto-frein-4/auto-pneu-6
et provoque une erreur 404.

Comment "remonter" l'arborescence ?

Merci d'avance pour votre aide...

Gzav
 
WRInaute passionné
il faut modifier test liens pour mettre l'une des formes suivantes :
Code:
<a href="/auto-pneu-6">...
<a href="../auto-pneu-6">...
<a href="http://www.ndd.com/auto-pneu-6">...
 
WRInaute passionné
une autre solution est d'ajouter la ligne suivante dans le <head> (ca indique que les liens sont relatifs à cette adresse et non le répertoire courant) :
Code:
<base href="http://www.ndd.com/">
 
Nouveau WRInaute
Merci Forty pour ta réponse !

:oops: Par contre, je suis désolé, je me suis tellement focalisé sur le .htaccess que j'en oublie les bases !
Effectivement, avec les liens corrigés, cela fonctionne mieux.

Par contre une question en appelant une autre, par rapport à ma règle de réécriture, sur certaines url il faut que j'aie plusieurs termes après celui de ma catégorie.ex :
Code:
http://www.ndd.com/auto-carrosserie-peinture-8/
mais dans ce cas, me règle ne fonctionne plus !

Je remets ma règle :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([^/]*)-([^/]*)-([0-9])/$ /ma_page.php?id_cat=$3&actu=$1 [L]

J'ai essayé plusieurs choses mais sans succès... Je suis désolé mais je crois que j'aurai d'autres questions à venir. Merci de votre patience.
 
WRInaute passionné
si $1 ne peut pas contenir de tiret essaye avec :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([^/-]*)-[^/]*-([0-9])/$ /ma_page.php?id_cat=$2&actu=$1 [L]
 
Nouveau WRInaute
Excellent. Merci Forty ! Cela fonctionne parfaitement ! :D

Par contre, j'avais un menu déroulant (accordéon Mootools) qui contenait mes catégories (3 catégories et une dizaine de sous-catégories). Et depuis que l'url rewriting est en place, cela déconne un peu : le déroulement se fait correctement, pas de problème sur mes effets de survol, mais dès que je change de page, c'est invariablement la première catégorie qui est déroulée.

Est-ce que quelqu'un a déjà rencontré ce cas ?
 
WRInaute accro
forty a dit:
une autre solution est d'ajouter la ligne suivante dans le <head> (ca indique que les liens sont relatifs à cette adresse et non le répertoire courant) :
Code:
<base href="http://www.ndd.com/">
Moi je trouve plus propre et sur de ne créer que des liens complets avec
Code:
http://$_SERVER['HTTP_HOST']/
 
Nouveau WRInaute
Bonsoir Milkiway et merci pour ta réponse.

L'avantage du base href est que cela évite de reprendre tous les liens du site (les images, etc.), non ? C'est une bonne solution quand on est un peu fainéant. Pourrais-tu m'éclairer sur les avantages à reprendre tous les liens du site, s'il te plait ?
 
Nouveau WRInaute
Re : [RESOLU] Rewriting et pseudos dossiers

Bonjour,

J'ai résolu mon problème par rapport à ma dernière question et c'était tout bête !

Là encore je suis revenu à la base et j'ai commencé à réfléchir à mon code plutôt qu'à mon .htaccess et la solution était évidente : une petite fonction php pour changer la valeur en question dans mon bloc de code javascript.
En tout cas merci pour votre aide pour mes rewrite rules et désolé pour le hors sujet sur l'Ajax ! :P

Gzav
 
Discussions similaires
Haut