Как захватить значение параметра с помощью mod_rewrite - PullRequest
0 голосов
/ 18 января 2011

Я использую Apache2.2.17 и пытаюсь перенаправить URL, как показано ниже, с сохранением того же значения параметра, но с другим именем ключа.

/aaa/bbb/ccc?oldkey=value  => /ddd?newkey=value

Я пробую некоторые варианты RewriteRuleкак ниже, но не успешно.

RewriteRule /aaa/bbb/ccc?oldkey=(.*) /ddd?newkey=$1 [R,L]

Затем я заметил, что если у меня есть условие, подобное приведенному ниже, сохраняется только последнее значение пути и ключ / значение параметра теряются.

RewriteRule /aaa/bbb/(.*) /ddd?newkey=$1 [R,L]  ;This produces /ddd?newkey=ccc 

Итак, мой вопрос:

Есть ли способ получить значение параметра с помощью Apache mod_rewrite и как мне этого добиться?(Я тоже могу использовать mod_proxy)

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 18 января 2011

Вы можете проверить, что в %{QUERY_STRING}:

RewriteCond %{QUERY_STRING} oldkey=(.*)
RewriteRule .* /ddd?newkey=%1 [R,L]

Где %1 - первая группа захвата из RewriteCond (называемая RewriteCond backreference ).

0 голосов
/ 18 января 2011

Если под «значением параметра» вы подразумеваете строку запроса, то вы можете добавить ее в свои изменения, добавив QSA в свою команду, чтобы у вас было [QSA, R, L]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...