Bonjour,

J'ai une règle de réécriture de la forme suivante :

RewriteRule ^forum_([a-zA-Z]*).html$ ./index.php?page=forum&param=$1 [QSA,L]


Et ça marche très bien.

Je voulais rajouter les www dans mes URL, j'ai donc mis la règle de réécriture suivante :

RewriteCond %{HTTP_HOST} ^mondomaine.com
RewriteRule ^(.*)$  http://www.mondomaine.com/$1  [QSA,L,R=301]


Et ça marche aussi. MAIS, si je tape URL
http://mondomaine.com/forum_blabla.html
, l'URL se transforme en
http://www.mondomaine.com/index.php?page=forum&param=blabla


Moi, je souhaiterais avoir plutôt :
http://www.mondomaine.com/forum_blabla.html


Merci d'avance pour votre aide.

Nas
Bonjour kustolovic,

Merci pour ta réponse. Ta proposition fonctionne bien, elle est générique et effectivement plus propre. Mais le problème reste le même. Quand j'inverse l'ordre des règles, j'ai une erreur 500 signalant une mauvaise redirection. Je continue à investiguer...

Merci encore.
Nas
Rebonjour,

Je pense que c'est une question d'ordre des règles et leurs Flags (les drapeaux). Je récapitule mes 3 règles principales :

# Ajouter les www à mes URL
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^  http://www.%{HTTP_HOST}%{REQUEST_URI}  [NE,R=301]


# Rediriger les pages du style /mapage_monparam.html vers /index.php?page=mapage&param=monparam
RewriteCond %{Request_URI} /([a-zA-Z]*)_([a-zA-Z]*).html
RewriteRule ^([a-zA-Z]*)_([a-zA-Z]*)_([a-zA-Z]*).html$ ./index.php?page=$1&param=$2 [L]


# Rediriger les pages du style /mapage vers /index.php?page=mapage
RewriteCond %{Request_URI} !/([a-zA-Z]*)_([a-zA-Z]*).html
RewriteRule ^(.*)$ ./index.php?page=$1 [L]


Si cela vous permet d'y voir claire pour m'aider.

Merci.
Nas
Modifié par nas44 (28 Nov 2012 - 21:07)