2013-08-12 4 views
0

по какой-то плохой причине я получаю запрос-строку, возвращенную из некоторых внешних Applikations, которые выглядят следующим образом:Rewrite QueryString, который имеет два Questionmarks> замените 2 &

/?pid=778edb836ed7803042724a674a2e5e51?QID=041349e48e1c4d46b1a2b8ff610ca19c&TransID=1374845199000003000307675&Status=AUTHORIZE_REQUEST&XID=4f75837b42ce4cca83abee43438e1d06 

Теперь я думал, что всегда есть TransID и я мог бы переписать его, но я потерпел неудачу - моя попытка выглядит так:

Rewritecond %{QUERY_STRING}% (.+)\?(.+TransID=.+) [NC] 
Rewriterule ^(.*) http://${servers:apserver}:${servers:apport}/$1?%1&%2 [P,L] 

моя цель - заменить вторую? бувигер QID с помощью &

+0

Почему вы используете флаг P и что '. $ {servers: apserver} '? – anubhava

+0

P флаг as apache используется в качестве обратного прокси в нашем случае, и мы используем файл server.txt для динамической отправки запроса на правильный host-servers.txt содержит имена серверов. Таким образом, мы можем автоматически создавать перезаписываемые записи и делать домашнее хозяйство в Excel-Sheet. – macbert

ответ

0

Просто добавив \ & и changeing до * помогли исправить это

Rewritecond %{QUERY_STRING}% (.*)\?(.*\&TransID=.*) [NC] 
0

Попробуйте этот код:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^?]*)\?([^?]*)\?([^\s]*)\s 
Rewriterule^http://${servers:apserver}:${servers:apport}/%1?%2&%3 [P,L] 
+0

решил это тем временем, попробует вам предложение позже – macbert

Смежные вопросы