Como passar parâmetros GET para URL reescrito?

13

Eu tenho uma .htaccessregra de reescrita como esta:

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

O que isso faz é, se alguém visitar http://example.com/search/testo URI realmente processado http://www.example.com/search.php?q=test.

Agora, se eu tentar passar um parâmetro GET aleatório extra para o meu URL reescrito, o parâmetro será ignorado. Então, se eu tentar fazer uma visita aqui:

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

O parâmetro extraé ignorado. Parece que não passou nada.

Esse problema pode ser corrigido? Se sim, como?

Jake Wilson
fonte

Respostas:

14

Você está procurando o Query String Abandeira ppend - por exemplo,

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

Consulte a mod_rewritedocumentação para obter uma descrição completa dos sinalizadores RewriteRule.

danlefree
fonte
Ah legal! Eu sabia que havia algo assim. Eu sou um .htaccessnoob.
Jake Wilson
Existe uma maneira de adicionar QSA a todas as regras
hakkikonu
Oi @danlefree Sei que é uma pergunta antiga, mas usando o Wamp, quando faço isso, todas as minhas folhas de estilo, scripts etc. perdem referência. como posso resolver isso?
DannyGM