MrSS
@MrSS

Как изменить URL с GET запросами через .htaccess?

Есть долгий url с get параметрами (значение которых меняется):
/index.php?do=filter&start_xf_year=2017&end_xf_year=2018&start_xf_kinopoisk=0&end_xf_kinopoisk=10&start_xf_imdb=0&end_xf_imdb=10&cat_mozg=0&category[]=1&xf_country_mozg=0&sort=date&order=DESC&cstart=2

Нужно получить:
/filter/novinki/page/2

Есть rewrite который меняет практически аналогичную ссылку
RewriteRule ^filter/([^.]+)/$ index.php?do=filter&seourl=$1 [L]

изменяет
/index.php?do=filter&start_xf_year=2017&end_xf_year=2018&start_xf_kinopoisk=0&end_xf_kinopoisk=10&start_xf_imdb=0&end_xf_imdb=10&cat_mozg=0&category[]=1&xf_country_mozg=0&sort=date&order=DESC

на /filter/novinki/
Все что изменилось в первом это к полной ссылке добавился параметр &cstart=2, то есть page/2
  • Вопрос задан
  • 1508 просмотров
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
GET не является частью урла а следовательно выделяется другим способом, скобки вокруг гета, посколку вы не знаете какой из параметров будет первым, а какой пойдет через &
Все что вам остается узнать это
Первая скобка из RewriteRule - это $1 а вот если вы хотите взять ее же но из RewriteCond то это уже %1
Если же вам надо вовсе удалить гет параметра, так поставьте в конце урла куда знак вопроса, он удалит все геты.


# 301 --- http://shop.wildorchid.ru/Catalog/StyleCard.aspx?&shop=2&categoryid=2046&style=27647 => http://shop.wildorchid.ru/catalog/nizhnee_bele/1467-twin-set/trusy_slip_31/?offer=18120
RewriteCond %{QUERY_STRING} (^|&)shop=2($|&)
RewriteCond %{QUERY_STRING} (^|&)categoryid=2046($|&)
RewriteCond %{QUERY_STRING} (^|&)style=27647($|&)
RewriteRule ^Catalog/StyleCard\.aspx$ /catalog/nizhnee_bele/1467-twin-set/trusy_slip_31/?offer=18120 [L,R=301]


ну и что-то вроде такого получится
RewriteCond %{QUERY_STRING} (^|&)cstart=([0-9{1,}])($|&)
RewriteRule ^/index.php$ /filter/novinki/page/%2? [L,R=301]

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

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

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