Bonjour,
Je voudrais faire une redirection via htaccess d'une url avec des paramètres GET vers une url avec des paramètres GET

recherche?q=mot_a_rechercher vers /recherche/index/?q=mot_a_rechercher

J'ai donc fait cette ligne, mais elle ne semble pas fonctionner

RewriteRule ^recherche\?(.*)$ /recherche/index/?$1 [L,R=301]

J'ai essayé en remplaçant [L,R=301] par [QSA,L] mais rien non plus

J'avoue que je sèche un peu
Si quelqu'un peu m'aider cela serait très aimable :-)

Bonne journée

4 réponses


quenti77
Réponse acceptée

Il faudrais plutôt l'inverse, que tu partes de /recherche/TA_RECHERCHE et que ça devienne /recherche?q=TA_RECHERCHE

Dans la barrre d'adresse de ton navigateur, tu aura /recherche/TA_RECHERCHE et php recevra l'url : /recherche?q=TA_RECHERCHE. Ce qui donne côté htaccess :

RewriteRule ^recherche/(.+)$ /recherche/index?q=$1 [L,QSA]

Mais après quel est l'intérêt de vouloir une recherche sans query params ?

Si je regarde basiquement grafikart.fr, l'url de la recherche c'est : https://grafikart.fr/recherche?q=test

Hello,

Si c'est le même query param d'un côté comme de l'autre pourquoi ne pas simplement faire :

RewriteRule ^recherche$ /recherche/index [L,QSA]
fderoeux
Auteur

Merci pour ta réponse
cela fonctionne à moitié
RewriteRule ^recherche$ /recherche/index [L,R=301]
si j'ai une page recherche?q=test cela me redirige vers /recherche/index/?q=test
Je voudrais /recherche/index/test

fderoeux
Auteur

Merci pour tes conseils,
j'ai en quelque sorte suivi ceux-ci en gardant les paramètres GET visibles

Tout fonctionne à présent
Merci beaucoup et bonne journée