Как задать rewrite rule только для GET параметра (query string)?

Здравствуйте. Есть сайт. Есть урл (
http://stopgo.by/audi/a6313/a6c64f2004-2011718?attr_id=58
). ГЕТ параметр здесь служит фильтром (это айдишник запчасти).
Дело в том, что этот параметр используется и в других урлах, например здесь (http://stopgo.by/catalogs?attr_id=70).

Я бы хотел сделать так, чтобы менялся только этот ГЕТ параметр, хочу, наверно заменить, на part-id=42, то есть чтобы было, например, http://stopgo.by/catalogs/part-id=42 или
http://stopgo.by/audi/a6313/a6c64f2004-2011718/part-id=42
.
То есть, как я понял, надо сделать так, чтобы этот параметр был в самом конце урла. Как можно это прописать в RewriteRule?
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
ты хочешь поменять только сам гет параметр ?
# 301 --- stopgo.by/audi/a6313/a6c64f2004-2011718?attr_id=58 => stopgo.by/audi/a6313/a6c64f2004-2011718?attr_id=58
RewriteCond %{QUERY_STRING} (^|&)attr_id\=([0-9]{1,})($|&)
# если есть такой гет параметр
RewriteRule ^(.+)$ /$1\?part_id=%2 [L,R=301]
#То выделить все что есть в урле и прихреначить к нему такой гет параметр

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

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

Войти через центр авторизации
Похожие вопросы