@nik0laysviridov

Как сделать редирект с get параметрами на без них кроме utm меток?

Нужно, чтобы в ссылках вида
https://site.ru/?_escaped_fragment_=annatrish/oss8q
https://site.ru/?cat=3
/?feed=comments-rss2

get-параметры отсекались и открывалась страница с URL до ?. Но при этом нужно, чтобы остались рабочими ссылки с UTM-метками.

Использую вот такое правило:

RewriteCond %{REQUEST_URI} !^utm
RewriteCond %{QUERY_STRING} ^(.+) [NC]
RewriteRule ^(.*)$ /$1? [R=301,L]


Из URL убираются GET параметры, только исключение для utm меток не работает.
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 2
zkrvndm
@zkrvndm
Архитектор решений
Могу подсказать, как все это сделать на JavaScript:
<script>
    window.history.replaceState('', '', location.pathname);
</script>

Из плюсов: метки убираются только в браузере и это не ломает системы аналитики в вашем php-коде.
Из минусов: по факту это всего лишь маскировка и работает она только на стороне браузера.
Ответ написан
Комментировать
@nik0laysviridov Автор вопроса
Рабочее правило, если кому-то понадобится

# check that there is indeed a query string
RewriteCond %{QUERY_STRING} ^.+$
# check that it doesn't start with one of allowed parameters
RewriteCond %{QUERY_STRING} !^(utm_source)= [NC]
RewriteRule ^(.*)$ /$1? [R=301,L]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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