htaccess: Как добавить метку в URL при определенных условиях?

SysLink
На сайте с 06.11.2015
Offline
78
732

Знатоки, подскажите, возможно ли подобное сделать при помощи htaccess?

В общем, задача стоит такая: Нужно в конец URL добавлять метку, например, вида «?metka=0» или «&metka=0» (в зависимости от того, есть ли уже метки в URL). Но при этом, НЕ нужно добавлять эту метку, если она уже есть в урле, и даже имеет другое значение (например, «metka=32198766»).

В идеале, не добавлять метку в перечисленных путях – на главной странице (site.ru) или в каких-то разделах сайта (site.ru/category/) и т.д.

Иными словами, при открытии URL, нужно проверить есть ли данная метка в урле, не важно с каким значением, если есть – то не трогаем ничего. Если нет, то ее нужно добавить со значением равным 0 (metka=0). За исключением ряда заведомо определенных категорий сайта или без них (если они не будут указаны).

✦ Основатель и экс-директор крупного интернет-гипермаркета, инвестор, коуч ✦ Автор книги «Успешный интернет-магазин с нуля. Пошаговое руководство» ✦ Консультации, аудит, сопровождение бизнеса и обучение (подробнее на моем сайте) ✦ Сайт: www.sa1nikov.ru ✦ Skype: syslink.sergey ✦ WhatsApp / Telegram: +7 (917) 599-46-93 (только сообщения) ✦ YouTube: www.youtube.com/@sa1nikov
J
На сайте с 20.02.2014
Offline
120
jkm
#1

Если использовать флаг QSA, то пренаправление будет с ?a=b на ?metka=0&a=b


RewriteCond %{QUERY_STRING} !(^|&)metka=
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/category/
RewriteRule ^.*$ /$0?metka=0 [R=301,L,QSA]

Если нужно с ?a=b на ?a=b&metka=0


RewriteCond %{QUERY_STRING} !(^|&)metka=
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/category/
RewriteCond %{QUERY_STRING}&metka=0 &*(.+)
RewriteRule ^.*$ /$0?%1 [R=301,L]
SysLink
На сайте с 06.11.2015
Offline
78
#2

jkm, спасибо!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий