Назад | Перейти на главную страницу

htaccess: Как заменить строку специальным символом?

Я хочу перенаправить следующий 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).