Version complète: sur le forum Webmaster Hub : debutant : probleme avec deux RewriteRule
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
weddy57
Bonjour,

J'ai découvert l'URL rewriting hier et ca marche a 90% sur mon site de test sous EasyPHP. J'ai deux types d'URL a interpreter :

ht*p://localhost/monsite/index.php?module=page_nom
devient
ht*p://localhost/monsite/page_nom.html

Là ca marche, par contre

ht*p://localhost/monsite/index.php?module=news_details&page_name=page_nom
ne devient pas
ht*p://localhost/monsite/page_nom.html

Voici mon code :

CODE
Options +FollowSymlinks
RewriteEngine on
RewriteRule /([A-Z0-9a-z_-]+)\.html /monsite/index.php?module=$1
RewriteRule /([A-Z0-9a-z_-]+)\.html /monsite/index.php?module=news_details&page_name=$1 [L]



j'ai essayé avec des [R=301] mais les deux RewriteRule ne marchent pas ensemble, indépendemment oui. Par exemple quand je place un [R=301] sur mon premier rewrite, il me renvoie :

/monsite/index.php?module=nom_de_la_news

alors que ca devrait être

/monsite/index.php?module=news_details&page_name=nom_de_la_news


C'est là que ca coince ;-)


Désolé de mon ignorance, je ne suis que designer. Merci de votre aide en tout cas!
Jeanluc
Bonjour,

Tu ne peux pas "faire confiance" au système pour qu'il reconnaisse de lui même que, dans certains cas, localhost/monsite/page_nom.html doit être converti d'une certaine manière et autrement dans d'autres cas. Le format que tu choisis pour tes URL doit être sans ambiguïté pour le système, sinon il prendra la première règle qui s'applique.

De plus, tu ne peux pas mettre deux règles sur la même ligne. Va voir les pages de documentation de ce site: une vraie mine d'or pour démarrer en réécriture d'URL !

Jean-Luc
weddy57
Merci de ta réponse, le monde de l'URL rewriting est semé d'embûches pour un neuneu comme moi blush.gif

Donc, si je suis ton raisonnement, il sera possible de faire les choses suivantes dans le meme htaccess?

localhost/monsite/page_nom.html pour localhost/monsite/index.php?module=page_nom

et

localhost/monsite/news/page_nom.html pour localhost/monsite/index.php?module=news&detail=page_nom

Merci encore
Dan
Un commentaire sur ta seconde règle toutefois...

Les répertoires apparents (l'un virtuellement dans /news/ et l'autre dans / ) étant différents, il faudra soigner tes appels aux fichiers include, javascripts, css, images, etc en :
- soit renseignant leur chemin complet
- soit utilisant la balise <base href=...> dans le fichier index.php

Sinon, le navigateur va y perdre son latin. wink.gif
weddy57
Merci de ta réponse Dan rolleyes.gif

Mais bon, après presque trois jours à m'arracher les cheveux, ca ne marche pas. Donc les URL du site seront réécrites et pas les URL des news. Je laisse tomber parce que pas le temps. Je suis trop nul unsure.gif

Quelqu'un pourrait-il me dire si l'URL suivante sera bien indexée par Google?

h*tp://www.monsite.com/index.php?module=news_details&page_name=date_nomdelanews_sujet

Merci à tous de votre aide en tout cas! blush.gif
Jeanluc
Faut pas se décourager si vite. nonono.gif

Tu as essayé comme ceci ?
CODE
Options +FollowSymlinks
RewriteEngine on
RewriteRule /news-([A-Z0-9a-z_-]+)\.html /monsite/index.php?module=news_details&page_name=$1 [L]
RewriteRule /([A-Z0-9a-z_-]+)\.html /monsite/index.php?module=$1 [L]

N'oublie pas que l'ordre des lignes est important.

Jean-Luc
weddy57
Ca marche....

En regardant de plus près, c'est simple comme bonjour... wacko.gif J'avais abandonné le dossier virtuel pour un nom de fichier html différent mais pas de facon aussi simple et efficace.

Merci énormément de ton aide et d'avoir pris le temps de rédiger cette réécriture blush.gif d'habitude j'arrive toujours à me débrouiller tout seul, mais là j'ai calé.

Merci merci merci!!!!
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.