Voglio mod_rewrite un URL ad un'altra pagina, ma poi voglio anche qualsiasi stringa di query aggiunta per essere conservata.Come posso mod_rewrite e mantenere le stringhe di query?
RewriteEngine On
#enforce trailing slashes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://localhost/siteroot/$1/ [L,R=301]
RewriteRule ^apps/([A-Za-z0-9-_]+)/?$ index.php&app=$1
Quindi, se un utente visita apps/app1/
, index.php?app=app1
è mostrato. Tuttavia, voglio essere in grado di conservare stringhe di query facoltative, in modo che la visita apps/app1/?variable=x
restituisca index.php?app=app1&variable=x
.
Quale regola/condizione mod_rewrite renderebbe questo possibile?
Grazie, non avevo realizzato che fosse così semplice. –
+1 Accetto con @DanielOakey .. Stavo cercando di modificare qualcosa con regex e non funzionava .. –
Per chiarire, non si tratta di riscritture o reindirizzamenti. http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa dice: Quando l'URI di sostituzione contiene una stringa di query, il comportamento predefinito di RewriteRule è quello di eliminare la stringa di query esistente e sostituirla con quello appena generato. L'utilizzo del flag [QSA] fa sì che le stringhe di query vengano combinate. –