Работа с htaccess: редиректы урлов с параметрами

Иногда простыми и шаблонными методами не обойтись, поэтому в данной статье я предложу несколько интересных перенаправлений.
Часто мы сталкиваемся с CMS которые генерируют неЧПУ урлы.. в таком случае, обойтись обычным 301 редиректом вида
Redirect 301: /old-page/ http://site.by/new-page/ — не получится, что же делать если у нас урл с параметром, например site.by/katalog?=qdh1&kkdjsk ?

301 редирект урла с Get параметром

настроить редирект с GET парамером на новый урл

RewriteCond %{REQUEST_URI} ^/component/virtuemart/$ — урл до параметра
RewriteCond %{QUERY_STRING} ^page=shop.browse&category_id=12 — то, что после параметра (вместо ?= ставится ^)
RewriteRule ^.*$ /arenda-gruzovogo-avto.html? [R=301,L] — новый урл.

без сохранения GET параметра (нужно пробовать в отдельном случае)

RewriteCond %{REQUEST_URI} ^/component/virtuemart/$
RewriteCond %{QUERY_STRING} ^page=shop.browse&category_id=12
RewriteRule ^.*$ /arenda-gruzovogo-avto.html [R=301,L] — убираем в конце знак «?»

Пример редиректа урла с параметром на новый урл

Пример 1:

Всем знакомая ситуация, когда при возврате по пагинации на первую страницу, мы получаем не основные новости, а дубль вида — site.ru/news.html?p=1

Что делаем в таком случае:

RewriteCond %{REQUEST_URI} ^/news.html$
RewriteCond %{QUERY_STRING} ^p=1
RewriteRule ^.*$ /news.html [R=301,L]

Аналогичный пример 2:

RewriteCond %{REQUEST_URI} ^/tovary/holodilniki$
RewriteCond %{QUERY_STRING} ^page=0
RewriteRule ^.*$ /tovary/holodilniki [R=301,L]

Следующая статья: редирект урлов с .html в конце (перейти)

Добавить комментарий

Ваш e-mail не будет опубликован.