@NataliaCh

Как избавится от лишних символов в url после работы RewriteRule?

Бали адреса типа site.ru/article?art_id=10
Стали site.ru/article?id=10

Со старых нужно редирект на новые.
Пишу такое правило:

RewriteCond %{QUERY_STRING} art_id [NC]
RewriteRule .* id [L,R=301]

Правило работает, но после редиректа в url появляется символ %3f:
site.ru/article?id=10%3f

Как правильно написать правило?
Тестирую пока что на локалке (OpenServer)

PS. На боевом сервере (хостер 1Gb) редирект вообще не срабатывает. То есть, что-то не правильно пишу...
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
@dodo512
RewriteCond %{QUERY_STRING} ^art_(id=.*)
RewriteRule ^(article)$ /$1?%1 [R=301,L]

Добавлять выше остальных правил сразу после RewriteEngine On
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
RewriteCond %{QUERY_STRING} (^|&)art_id\=10($|&)
RewriteRule ^article$ /article\?id=10 [L,R=301]


Но наверное ID это некие цифры динамически меняющиеся в зависимости от урла так что сделаем регулярку на все цирфры сразу

RewriteCond %{QUERY_STRING} (^|&)art_id\=([0-9]{1,})($|&)
RewriteRule ^article$ /article\?id=%2 [L,R=301]


Где ([0-9]{1,}) - цифри хотябы одна и более собираем их в группу и подставляем ее в рул через %2 поскольку это вторая група.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы