Problème HTACCESS

Eléphanteau du PHP | 28 Messages

25 avr. 2015, 22:40

Bonjour à tous,

ça fait plusieurs heures que je me tire les cheveux pour essayer de faire une redirection avec .htaccess, donc je me dis qu'il y a quelque chose que je dois mal faire.

Je souhaite rediriger l'URL www.monsite.fr/category_5?p=9 vers http://www.monsite.fr/index.php?control ... gory=5&p=9

J'ai donc créé la règle suivante:

RewriteRule ^[a-zA-Z-]+_([0-9])+\?p=([0-9]+)$ /index.php?controller=category&id_category=$1&p=$2 [R=301,L]

Je ne sais pas pourquoi, le paramètre 'p' fait tout foirer. Ainsi:
RewriteRule ^[a-zA-Z-]+_([0-9])+ => fonctionne
RewriteRule ^[a-zA-Z-]+_([0-9])+\? => ajout du paramètre p: ne fonctionne plus

Savez-vous pourquoi ? J'ai essayé d'enlever l'antislash devant le p, mais bien sûr, ça ne résout rien (? étant un caractère spécial)

Merci beaucoup pour vos réponses.

Mammouth du PHP | 674 Messages

25 avr. 2015, 23:11

il faut utiliser %{QUERY_STRING}, exemple :

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/page\.php$
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^(.*)$ http://mydomain.site/page/%1.pdf [R=302,L]

ViPHP
ViPHP | 5877 Messages

27 avr. 2015, 00:07

Une autre option est d'utiliser le flag QSA :
http://httpd.apache.org/docs/2.4/rewrit ... l#flag_qsa

Cordialement