Редирект при настройке ЧПУ вукомерсс
Настроил ЧПУ редирект происходит почти везде, но для страниц товаров почему-то не срабатывает
настройки постоянных ссылок следующие:
Общие настройки
Произвольно: /%postname%/
Дополнительно
База категорий товара: product-category
База меток товара: product-tag
Постоянные ссылки товаров
Произвольная база: /product/
Вид ссылок сейчас, действуют оба вида:
старая ссылка https://banzai-sport.com/?product=zhilet-utyazhelitel-kompakt-2-20-kg-razmer-44-48
новая ссылка https://banzai-sport.com/product/zhilet-utyazhelitel-kompakt-2-20-kg-razmer-44-48/
нашел такой вариант для установки редиректа
# Внешний редирект клиента со старых динамических URL на новые статические RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?product=([^&]+)&color=([^&]+)&size=([^&]+)&texture=([^&]+)&maker=([^\ ]+)\ HTTP/ RewriteRule ^index\.php$ //example.com/product/%1/%2/%3/%4/%5? [R=301,L]
но данный редирект для таких ссылок:
Старый динамический формат URL:
index\.php?product=widget&color=blue&size=small&texture=fuzzy&maker=widgetco
Новый статический формат URL:
/product/widget/blue/small/fuzzy/widgetco
а у меня такой:
Старый динамический формат URL:
/?product=bla-bla-bla
Новый статический формат URL:
/product/bla-bla-bla/
прочитав, что не правильное введение правил в .htaccess может повлечь нарушения в работе, я не стал экспериментировать на рабочем сайте
подскажите как правильно прописать редирект.
Если применительно конкретно к вашему сайту banzai-sport, т.е. после доменного имени будет сразу идти единственный get параметр, то можете попробовать такой код:
P.S. Если в get параметре будут присутствовать кирилические символы, то после редиректа в строке браузера они будут отображаться закодированными (т.е. вот так: %D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0)
редирект происходит, но отключаются все стили
Хм, понятно. Это потому, что к стилям и скриптам тоже приписываются get параметры. Тогда используйте следующий код:
Благодарю, все работает как надо
Поторопился... не все работает как надо
данный редирект работает для товаров, но он сломал редиректы для таких ссылок
без такого правила работало так:
https://banzai-sport.com/?page_id=5354 редиректит на такую ссылку https://banzai-sport.com/utyazheliteli-so-skidkoj/
https://banzai-sport.com/?attachment_id=5006 редиректит на эту ссылку https://banzai-sport.com/product/manzhety-dlya-nog-05-kg/manzhety-dlya-nog-0-5-kg/
а с этим правилом стало так
https://banzai-sport.com/?page_id=5354 редиректит на такую ссылку https://banzai-sport.com/page_id/5354
https://banzai-sport.com/?attachment_id=5006 редиректит на эту ссылку https://banzai-sport.com/attachment_id/5006
соответственно ошибка 404
еще и куки в браузере запоминает и только полной чисткой можно после удаления правила опять в браузере увидеть то что было раньше
Да, браузеры помнят о 301 редиректе, пока хранится кэш. Ну что ж, ситуация ясна. Тогда добавим еще одну проверку на наличие упоминания _id в get запросе. Если он будет присутствовать, то редирект игнорируется.
данный набор правил так же не сработал, я покопался в описаниях модреврайта и составил свои правила чисто на интуиции и логике
данный набор сработал, не знаю, но мне кажется сайт начал немного под тормаживать...
Если взять адрес https://banzai-sport.com/?product=zhilet-utyazhelitel-kompakt-2-20-kg-razmer-44-48, то в переменную веб-сервера QUERY_STRING попадет только product=zhilet-utyazhelitel-kompakt-2-20-kg-razmer-44-48, без всяких слешей и вопросительных знаков вначале. Получается, что если вы хотите делать редирект только к одной этой категории product, вам достаточно будет этого:
product - это не категория, это вукомерсс подставляет в ссылку для товаров, если ссылка динамическая, она выглядит так /?product=naimenovanie-tovara , а для постоянной ссылки она формируется вот так - /product/naimenovanie-tovara/
как я писал выше, после настроек постоянных ссылок, все ссылки начали редиректиться с динамических на постоянные, а вот ссылки для товаров не стали и получились дубли со старыми и новыми ссылками
видна я слишком много понаписал и ввел несколько в заблуждение вас...
В любом случае благодарю за помощь, натолкнули на мысль в каком направлении копать...