Comment passer des paramètres GET à une URL réécrite?

13

J'ai une .htaccessrègle de réécriture comme celle-ci:

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^search/(.*)$ search.php?q=$1

Ce que cela signifie, c'est que si quelqu'un visite http://example.com/search/testl'URI qui est vraiment traité, c'est http://www.example.com/search.php?q=test.

Maintenant, si j'essaie de passer un paramètre GET aléatoire supplémentaire à mon URL réécrite, le paramètre est ignoré. Donc, si j'essaie de faire visiter ici:

http://www.example.com/search/whatever?extra=true

Le paramètre extraest ignoré. Il ne semble pas du tout être adopté.

Ce problème peut-il être résolu? Si c'est le cas, comment?

Jake Wilson
la source

Réponses:

14

Vous recherchez le drapeau Query String Append - p.ex.

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^search/(.*)$ search.php?q=$1 [QSA]

Consultez la mod_rewritedocumentation pour une description complète des indicateurs RewriteRule.

danlefree
la source
Ah bien! Je savais qu'il y avait quelque chose comme ça. Je suis un .htaccessnoob.
Jake Wilson
Existe-t-il un moyen d'ajouter QSA à toutes les règles
hakkikonu
Salut @ danlefree Je sais que c'est une vieille question, mais en utilisant Wamp, quand je fais cela, toutes mes feuilles de style, scripts, etc. perdent la référence. comment puis-je résoudre ce problème?
DannyGM