Probleme Liens menu

Nouveau WRInaute
Bonjour.

Voilà, j'expose mon souci au cas ou quelqu'un a déjà eu ça et veut bien me donner un coup de main :

Le problème : J'ai un site "type" e-commerce dont les menus (en include php) sont dynamiques.
Exemple, dans le menu, il y a une rubrique pour rechercher un produit par Type de produit et Région : la page resultats_p.php va envoyer une requête avec 3 variables (Type de produit, type de recherche, Region).

Avec mon urlrewriting, si je rentre l'adresse en direct, pas de souci (enfin si... sur les régions à nom composés Languedoc-Rousillon par exemple... Mais c’est une autre histoire). il m'affiche bien
typeproduits-typerecherche-Region.html
pas de souci. là ou j'ai un problème, c’est que les éléments du menu sont toujours en
resultats_p.php?Type_prod=blablabla&r=blablabla&v=blablabla

Une idée ?

Code:
Options +FollowSymLinks
Options -Multiviews
RewriteEngine On

RewriteBase /

	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule (.*)-(.*)-(.*)\.html resultats_p.php?Type_prod=$1&r=$2&v=$3

D'autre part, lorsque je veux par exemple utiliser des / à la place des -, les styles CSS du menu ne suivent plus...? ça vient du fait qu'il est en include ?

Merci de votre aide précieuse !!! :-)
 
WRInaute accro
Bonjour

1) C'est normal. La réécriture d'URL dans le .htaccess ne va pas modifier les liens qui sont générés en PHP. Il te faut donc également modifié les liens qui sont générés dans le menu, et en + rediriger en 301 les URL du type .php?.. vers les URL réécrites, sinon tu auras du contenu dupliqué.

2) Oui, si ton style CSS est appelé en chemin "relatif", ajouter des / (donc des répertoires virtuels) empêchera de trouver le style.

Autrement dit, ton appel de CSS (et images, javascript, etc ..) actuel est peut être :
"CSS/style.css"

il faut le modifier en adresse absolue, cad
"/CSS/style.css"
 
Nouveau WRInaute
Merci pour ta réponse !

Quand tu dis :
nickargall a dit:
1) C'est normal. La réécriture d'URL dans le .htaccess ne va pas modifier les liens qui sont générés en PHP. Il te faut donc également modifié les liens qui sont générés dans le menu, et en + rediriger en 301 les URL du type .php?.. vers les URL réécrites, sinon tu auras du contenu dupliqué.

Je dois recréer tous mes liens dans le code php !? Sous quelle forme, comment je passe les variables ?

nickargall a dit:
il faut le modifier en adresse absolue, cad
"/CSS/style.css"

là auss, dans le php directement ?

Merci encore pour ton aide !!! :-)
 
WRInaute accro
Oui, tu dois recréer tous tes liens. C'est la mauvaise nouvelle du jour, ca peut demander beaucoup de boulot;
par contre, pour te dire comment y arriver & passer les variable, j'en sais rien, j'ai pas les mains dans ton code ni dans tes bases de données ;)

Il te faudra aussi rediriger ensuite en 301 ces vieilles URL vers les nouvelles.

Comme quoi, le passage à la réécriture d'URL pour un site déjà indexé, c'est pas forcément la panacée.



Pour le CSS, je peux pas te dire à quel endroit est généré le code HTML qui appelle la feuille de style, il faut juste que tu aies une adresse absolue. A toi de trouver à quel endroit c'est indiqué dans tes sources
 
Nouveau WRInaute
Il est pas encore indexé puisqu'en production... inaccessible...
Mais je me posais la question de l'url rewriting...

par contre, v'la le cirque pour rediriger les menus.... la misère...

En gros, si tu pouvais me donner un dernier coup de main avec un exemple, je ne t'embetterais plus ensuite !!! :-)
si j'ai un lien qui dit :
Code:
<a href="detail.php?id=<?php echo $row_produits['id']; ?>">détail </a>
comment je la re-écrit dans le code ?
dans ce genre ? (si j'ai fait un rewrite comme ça "produits-xx-html" ?
Code:
<a href="produits-<?php echo $row_produits['id']; ?>.html">détail du produit</a>

Mais à ce moment là, comment je passe mes variables à la page qui traite l'id reçu ?
 
WRInaute accro
Rapidement car je dois filer, en gros, oui pour :
dans ce genre ? (si j'ai fait un rewrite comme ça "produits-xx-html" ?
<a href="produits-<?php echo $row_produits['id']; ?>.html">détail du produit</a>

En ce qui concerne :
Mais à ce moment là, comment je passe mes variables à la page qui traite l'id reçu ?
c'est là qu'intervient le .htaccess; il réécrit l'URL "/produits-72.html" en "detail.php?id=72" côté serveur.
La ou tu vas devoir davantage creuser par contre, c'est si tu veux ajouter "proprement" un mot variable (genre nom du produit) dans l'URL.

bon courage
 
Nouveau WRInaute
OK, merci pour ton aide, j'ai réussi à en faire une propre avec titre et tout dans l'URL...
ça devrait le faire pour le reste !
Merci encore !
 
Discussions similaires
Haut