Sto provando a generare un reindirizzamento esterno che coinvolge alcuni compiti specifici.
- Se il valore della stringa di query specifica si trova nell'URL, reindirizzare.
- Se reindirizzato, sostituire uno dei nomi dei parametri della stringa di query ma non il suo valore.
- Se # 1 è falso, quindi ignora riscrittura e procedi
Esempio: ho l'url http://foobar.com/?a=123&b=456&c=blah
Innanzitutto, se il parametro c = blah
, reindirizzare a http://barfoo.com/
In secondo luogo, sostituire a
con x
parametro quindi l'URL finale http://barfoo.com/?x=123&b=456&c=blah
Qui di seguito è la mia ipotesi migliore fino ad ora dopo aver effettuato delle ricerche http://mod-rewrite-cheatsheet.com/ e Funzionalità nascoste di mod_rewrite
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.foobar.com$ [NC]
RewriteCond %{QUERY_STRING} ^a=(.*)&b=(.*)&c=blah$ [NC]
RewriteRule ^(.*)$ http://barfoo.com/?x=%1&b=%2&c=blah [NC,L,QSA,R=301]
Tuttavia, l'URL aggiunge alla stringa di query, non sostituendo.
Vengo reindirizzato a http://barfoo.com/?x=123&b=456&c=blah&a=123&b=456&c=blah
risposte:
0 per risposta № 1sa di fronte
Rimozione QSA
dalle bandiere ha risolto il problema. QSA
significa "aggiungi la stringa di query esistente alla regola di riscrittura corrente". Ignora i nuovi parametri della stringa di query che stai aggiungendo.
Ho pensato che fosse necessario che esistessero parametri di stringa di query per la regola di riscrittura stessa.
RewriteRule ^(.*)$ http://barfoo.com/?x=%1&b=%2&c=blah [NC,L,R=301]