mod_rewrite Сопоставление с шаблоном RewriteRule завершается неудачно, когда строка запроса кодируется в URL - PullRequest
0 голосов
/ 31 марта 2012

Я пытаюсь использовать mod_rewrite RewriteRule, и в моем RewriteRule я пытаюсь сопоставить URL-адрес, строка запроса которого выглядит следующим образом:

http: ///myfakeoam/obrareq.cgi? ....

Мой RewriteRule выглядит следующим образом:

RewriteEngine On

RewriteCond% {QUERY_STRING} ^ wh = (. *) $ [NC]

RewriteRule^ / myfakeoam / obrareq.cgi $ http://apache1.whatever.com/formbasicprotected/index.html [CO = wh:% 1: .whever.com: 1440: /]

Когда я тестирую вручную, вручную вводя URL-адрес в браузере, что RewriteRule может соответствовать запросу, если запрос выглядит так:

http: ///myfakeoam/obrareq.cgi? wh = xxx & ru = yyyy & ....

но,в моей реальной системе запрос создается другим приложением, и он выглядит как URL-кодирование (фактически дважды URL-кодирование) строки запроса (например, замена равным «% 3D» и т. д.), то есть:

http: ///myfakeoam/obrareq.cgi? Wh% 3Dxxx ....

И если часть строки запроса имеет URL-кодировку, подобную которой, сопоставление с шаблоном в моем RewriteRule не вызывает ошибок,..

Есть ли способ справиться с этой ситуацией?

Спасибо, Джим

1 Ответ

0 голосов
/ 31 марта 2012

Отвечая на мой собственный вопрос, я только что понял, что RewriteCond просто выполняет сопоставление регулярного выражения для строки запроса, поэтому я изменил его на:

RewriteCond% {QUERY_STRING} ^ wh% 3D (. *)$ [NC]

и тогда это сработало.

Джим

...