/ / Mod Riscrivete Aggiungendo parametri stringa di query, non sostituendo - .htaccess, mod-rewrite, redirect, helicontech

Mod Rewrite Aggiunta parametri stringa di query, non sostituzione - .htaccess, mod-rewrite, reindirizzamento, helicontech

Sto provando a generare un reindirizzamento esterno che coinvolge alcuni compiti specifici.

  1. Se il valore della stringa di query specifica si trova nell'URL, reindirizzare.
  2. Se reindirizzato, sostituire uno dei nomi dei parametri della stringa di query ma non il suo valore.
  3. 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 № 1

sa 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]