Bonjour,
J'ai mis en place récemment une réécriture d'url sur mon site.
Étant encore en train de le développer, les liens internes au site sont toujours de la forme mapage.php?param1=xx¶m2=xx...
Via htaccess j'ai redirigé mes différents de façon à ce que l'url soit en format réécrite (http://www.monsite.fr/param1/param2/...)
Tout fonctionne correctement sauf une page.
Cette page peut accepter 3 ou 4 paramètres.
Elle est de cette forme :
mapage.php?param1=xx¶m2=xx¶m3=xx
ou
mapage.php?param1=xx¶m2=xx¶m3=xx¶m4=xx
Le paramètre 4 dépend du paramètre 3. Suivant la valeur du paramètre 3 on a besoin du paramètre 4 ou pas.
Coté htaccess maintenant.
Voici le code :
Pour information, en ce qui concerne "internal_redirect" dans le htaccess, ce n'est qu'une condition permettant de différencier l'url renseignée dans le navigateur de celle réécrite et redirigée par apache.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 RewriteCond %{QUERY_STRING} !internal_redirect=1 RewriteCond %{REQUEST_FILENAME} ^(.+)/mapage.php$ RewriteCond %{QUERY_STRING} ^param1=(.*)¶m2=(.*)¶m3=(.*)$ RewriteRule mapage.php /url_du_site/%2/%1/mapage/%3/? [R=301,L] RewriteRule ^([a-z]+)/([a-z]+)/mapage/([a-z]+)/?$ mapage.php?param1=$2¶m2=$1¶m3=$3&internal_redirect=1 [L,QSA] RewriteCond %{QUERY_STRING} !internal_redirect=1 RewriteCond %{REQUEST_FILENAME} ^(.+)/mapage.php$ RewriteCond %{QUERY_STRING} ^param1=(.*)¶m2=(.*)¶m3=(.*)¶m4=(.*)$ RewriteRule mapage.php /url_du_site/%2/%1/mapage/%3/%4/? [R=301,L] RewriteRule ^([a-z]+)/([a-z]+)/mapage/([a-z]+)/([0-9]+)/?$ mapage.php?param1=$2¶m2=$1¶m3=$3¶m4=$4&internal_redirect=1 [L,QSA]
Astuce trouver sur le forum ici
Bien sur si j'enlève une des deux règles, l'autre fonctionne.
Une idée pour supprimer ce conflit ?
Partager