1 Отредактировано Антон (22.10.2016 20:20:29)

Тема: Модуль редиректа

Добрый день.
Ищу помощи в составлении регулярных выражений. Сам не осилю.
Сайт переезжает и меняется вся структура ссылок. Нужно настроить редирект, чтобы не потерять страницы в индексе.
На старом сайте структура выглядит так:
site.ru/maincatalog/subcatalog1/subsubcatalog2/.../product.html
Может быть и такой:
site.ru/maincatalog2/product2.html
site.ru/maincatalog2/subcatalog2/product3.html
Собственно, вложенность может доходить до 5-го уровня (5й - товар).
Всего 8 основных категорий и около 70 подкатегорий разного уровня.

Все алиасы категорий и товаров перенесены, однако в стандартном роутере у товаров окончания никакого нет (html).
Как в моем случае правильно построить логику редиректов?

Повысить оценку Понизить оценку

2

Re: Модуль редиректа

В некоторых старых системах - абсолютной ошибкой является использование названий категорий в URL адресах товаров. Во первых это отодвигает от начала, а значит уменьшает значимость для поисковиков, самого главного участка - названия товара, во вторых делает невозможным свободное перемещение товара среди категорий без потери позиций, в третьих не позволяет завязывать на участки URL никакие правила, так как site.ru/computers/ - это может быть список товаров, а site.ru/news/ - это новости. Практически все современные системы уже давно применяют маркированные секции для точного определения характера страниц.

Стандартной практикой в вашем случае является составление полной карты редиректов,
которая включает старый URL, новый URL (т.е. прямо для каждого товара - одна запись, без использования регулярных выражений). Такую карту вам может составить любой программист, при наличии доступа к старой базе и при условии, что в URL нового сайта есть точный участок, который соответствует старому. Делается это разработкой скрипта, который пробегается по базе товаров и формирует старый URL -> новый URL.

Если вы все же захотите использовать регулярные выражения, то вам однозначно нужно будет перечислять возможные корневые секции, примерно так:

Старый URL (регулярное выражение)

^/(computers|notebook|apple)/(.*?/)?(.*?).html$

Здесь то, что будет перед .html будет записано в переменную \3, которую вы можете вставить в новом URL.

Новый URL

/product/\3/

Рекомендую хороший сервис для тестирования регулярных выражений:
https://regex101.com/r/ic9pFW/1

Повысить оценку +1 Понизить оценку

3

Re: Модуль редиректа

Большое спасибо за ответ!
Однако, не совсем все-таки улавливаю логику.
Получается, через ИЛИ здесь я могу перечислить сразу все категории и субкатегории, верно?
Однако, для примера вот строка:

^/(dezinsekciya|geli|dusty|zashchita-ot-nasekomyh-i-prochie-preparaty)/(.*?/)?(.*?).html$/

Соответственно, новый адрес

/product/\3/

При запросе
site.ru/dezinsekciya/geli/fors-sayt-gel.html
происходит редирект сюда:
site.ru/catalog/geli/fors-sayt-gel.html/
И 404 ошибка разумеется. То есть по какой-то причине остается .html и еще добавляется слеш на конце.

Повысить оценку Понизить оценку

4

Re: Модуль редиректа

Или правильно будет разделить на два разных правила категории и товары?И обрабатывать категории с подкатегориями первыми, а товары - следующими?

Повысить оценку Понизить оценку

5

Re: Модуль редиректа

Да, для категорий и товаров должны быть разные правила, так как будут разные пункты назначения ( новый URL ).
В моем первом посте, в поле старый URL последний слеш был лишним, поправил.

Вам нужно указывать только корневые категории в "старом URL", чтобы редирект не сработал на какие-нибудь новостные или другие страницы, у которых будет такое же число секций в URL, как у страницы товара.

Повысить оценку Понизить оценку

6

Re: Модуль редиректа

К сожалению, последний слеш роли не сыграл, забыл об этом вчера сказать. Все-равно переадресует туда же.
А что касается субкатегорий, для них в таком случае писать свое правило редиректа под каждую просто?

Повысить оценку Понизить оценку

Re: Модуль редиректа

Да

8

Re: Модуль редиректа

Не смог выявить проблему. Проверил, при использовании правила:

Старый URL:

^/(dezinsekciya|geli|dusty|zashchita-ot-nasekomyh-i-prochie-preparaty)/(.*?/)?(.*?).html$

Новый URL:

/product/\3/

При запросе: site.ru/dezinsekciya/geli/fors-sayt-gel.htm
Редирект происходит сюда: sire.tu/product/fors-sayt-gel/

т.е. как и ожидалось.

Повысить оценку Понизить оценку

9

Re: Модуль редиректа

А у меня не происходит:)
Сейчас прям скопировал правило еще раз из поста и все также - редирект сюда:
http://nsk.dezarsenal.ru/catalog/geli/f … -gel.html/  (можно даже на этом домене попробовать).
Почему могут быть различия, интересно? Не может это быть связано с какими-нибудь настройками хостинга?

Повысить оценку Понизить оценку

Re: Модуль редиректа

Напишите в тех. поддержку.

11

Re: Модуль редиректа

Могу предположить, что у вас есть еще какое-то правило для редиректа, которое перекрывает это.

Повысить оценку Понизить оценку

Re: Модуль редиректа

Здравствуйте! Так давно никто вопросов не задавал!
Я как новичок и во всем ищу ответы на вопросы: правильно ли будет в 301 редирект указывать старый url: https://medtehnika78.com/product_list (из поиска Яндекс выдаёт ссылку на площадку Тиу) ,
А где новый url: https://medtehnika78.com/

Без галочек и прописывания регулярных выражений с .(!: и другими символами!
Будет ли работать такая схема?

Повысить оценку Понизить оценку