Passando variáveis de consulta opcionais pelo .htaccess

3

Ah, o htaccess machuca minha cabeça.

Então, eu tenho uma página que tem uma URL bonita de foo.com/radio/jobs embora na verdade mora em foo.com/content/directory_jobs.php/?section=radio

Consegui isso usando uma linha de .htaccess de ...

RewriteRule ^(radio|tv|magazines|newspapers)/jobs$ /content/directory_jobs.php?section=$1

Esta mesma página tem uma string de consulta? pages = opcional - para que você possa ir para foo.com/radio/jobs?page=2 e ver a segunda página.

A linha .htaccess acima, no entanto, não adiciona a variável this pages: com o resultado que o script PHP subjacente não vê uma variável 'pages'.

Posso ajustar a linha .htaccess acima para garantir que eu passe uma variável 'pages' se ela existir? Ou eu tenho que ter duas linhas de .htaccess para cada página como essa?

    
por jamescridland 28.05.2011 / 20:13

1 resposta

6

Basta adicionar o sinalizador QSA (consulta de sequência de caracteres de consulta)

RewriteRule ^(radio|tv|magazines|newspapers)/jobs$ /content/directory_jobs.php?section=$1 [QSA]

Exemplo e
Com a bandeira do QSA / radio / jobs - > /content/directory_jobs.php?section=jobs
/ radio / jobs? foo = bar - > /content/directory_jobs.php?section=jobs&foo=bar
/ radio / jobs? foo = bar & boo = bosh - > /content/directory_jobs.php?section=jobs&foo=bar&boo=bosh
mod_rewrite vai descobrir se precisa adicionar um? ou $ assim por uma regra de reescrita

RewriteRule ^ ([a-z] +) $ /$1.php [QSA]

/ alguma coisa? foo = bar - > /something.php?foo=bar

    
por 28.05.2011 / 20:51