8722 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,
Une partie de mon site passeras bientôt en format dynamique, par conséquent je me retrouve avec des adresses url pas très jolie. Je doit donc faire du URL Rewriting.

Ça me sera utile également pour "retrouver" des adresses url qui sont inscrite sur des emballages de produits. Impossible de faire des redirections dans ce cas précis, il y en a trop. Le URL Rewriting se révéleras fort utile dans ce cas-ci.

Donc voilà, avant de mettre tout ça en ligne officiellement je fait des tests... et ça ne fonctionne pas, évidemment. J'ai dû manquer un truc.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^.*$
RewriteRule ^cameras\/([a-z]+)\.html$ "http\:\/\/www\.spypoint\.com\/FR\/cameras\/chasse/index\.php?sousCategories=$1" [L]


Donc ex: -http://www.spypoint.com/FR/cameras/chasse/index.php?sousCategories=DEL noires-
doit devenir: -http://www.spypoint.com/FR/cameras/DEL-noires.html-

Éventuellement -http://www.spypoint.com/FR/cameras/chasse/camera.php?produits=FL-A-
deviendra: -http://www.spypoint.com/FR/cameras/FL-A.html-
Modifié par juliesunset (08 Apr 2013 - 22:38)
^cameras
ou
^FR/cameras

de plus je croit pas qu'il faut \ les / perso dans mes règles, je le fait pas et ça marche
Modifié par ilar (26 Mar 2013 - 01:38)
Tu peux expliquer ce qui ne fonctionne pas exactement ?

PS : Il faut bien garder les antislashs devant les slashs dans tes regex.
Bonjour,
As tu regardé du côté de rewritebase ? Normalement il faut mettre
rewritebase /
mais selon les serveurs il faut ajouter le chemin.

Quand tu dis que cela ne fonctionne pas, cela veut dire que tu as une page blanche ?
Non, non. Tout se s'affiche normalement et aucune réécriture de l'URL. rien.

Je cherche sur RewriteBase, mais je ne suis pas sûr de comprendre comment ça marche.
Je ne comprend pas ce que tu veux dire.
L'un des but du URL rewriting est de réécrire un url afin d'avoir une adresse plus propre, non?
Les liens dans ton code html doivent être maintenant de la forme cameras/([a-z]+).html et non plus cameras/chasse/index.php?sousCategories=$1
ok... Donc c'est l'a toute ma problématique...

EDIT: Et puis même si je garde le répertoire "chasse" ça ne fonctionne pas plus...
Modifié par juliesunset (27 Mar 2013 - 20:52)
Tes sousCategories sont composés du caractère "-". Caractère qui n'est pas pris en compte dans ta règle ([a-zA-Z]*)
Ok, donc, je dois renommé les liens dans la page. C'est chose faites, mais maintenant ça m'amène à un 404....

Et puis dans la page "camera", je récupère le nom du produits grâce à un $_GET. Je réalise que si je fais la réécriture ainsi, le $_GET ne sera plus "valide"...
benj a écrit :
Tes sousCategories sont composés du caractère "-". Caractère qui n'est pas pris en compte dans ta règle ([a-zA-Z]*)

Effectivement, c'est pourquoi j'ai changé pour (.*), mais je ne suis pas sûr de mon coup.
juliesunset a écrit :
Et puis dans la page "camera", je récupère le nom du produits grâce à un $_GET. Je réalise que si je fais la réécriture ainsi, le $_GET ne sera plus "valide"...


Si, si, ça ne change rien, tu récupères toujours tes variables dans le tableau $_GET.
Bon j'ai un peu plus de temps pour te répondre à l'instant alors je vais te donner quelques indications complémentaires.

Pour ce que tu cherches à faire pour les sous-catégories, c'est :


RewriteEngine on

RewriteRule ^FR\/cameras\/([a-zA-Z-]+)\.html$ FR/cameras/chasse/index.php?sousCategories=$1 [QSA]


Le problème que tu vas avoir c'est que en ce moment tu as une sous-cat "DEL noires" et que dans ton url réécrite tu vas avoir "DEL-noires". Ça va te poser un problème car les 2 noms sont différents. Il faudrait que tu ajoutes une colonnes à tes sous-catégories avec la correspondance vers les nom réécrits et que tu fasses ta sélection dessus.

Exemple si tu as une colonne nom qui contient "DEL noires", tu ajoutes une colonne slug dans laquelle tu auras "DEL-noires".

Vois la suggestion de tm dans ce topic : http://forum.alsacreations.com/topic-20-66660-1-Remplacer-espace-avec-url-rewritting.html
Merci pour te réponse. je vais regarder ça.

Mais avant, j'ai une question. Si dans ma page je fait une str_replace qui remplace les espages par un tiret et que j'appelle ce lien à la place, ça fonctionnerais?
Pages :