Я хочу перенаправить следующий URL по следующей логике:
Input : https://www.example.com/blablabla,?trx_id=TX-23
Output : https://www.example.com/blablabla,TX-23
Правило всегда удаляет строку: ? trx_id =
Я пробовал следующее, но это не работает. Похоже, это связано со специальными символами
RewriteRule ^(.+)?trx_id=(.+)$ $1$2 [R=301,L]
Кто-нибудь может помочь? Спасибо
Вместо этого попробуйте следующее:
RewriteCond %{QUERY_STRING} ^trx_id=([^&]*)
RewriteRule (.*) /$1%1 [QSD,R,L]
В RewriteRule
шаблон совпадает только с URL-путем. Чтобы соответствовать строке запроса, вам понадобится состояние что сверяется с QUERY_STRING
серверная переменная.
%1
(в отличие от $1
) является обратной ссылкой на предыдущий CondPattern (т. е. значение trx_id
Параметр URL).