Редирект 50 000 страниц, как правильно сделать?

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем p2rcoder, 17 мар 2019.

  1. p2rcoder

    p2rcoder Нарушитель

    Регистр.:
    16 июл 2012
    Сообщения:
    321
    Симпатии:
    146
    Переезд на новый сайт. На старом в урлах категорий товаров, а так же самих товаров, добавлялись айдишники, на новом их не будет. Товаров примерно 50 000, т.е. прописывать через .htaccess не вариант, так как пишут что могут быть проблемы с производительностью, что на каждый запрос апач будет ковырять все 50 000 правил редиректов. Как быть? Может кто поможет составить правильно правило на все ссылки в htaccess за деньги? Логика какая-то в изменениях будет, например:

    категория
    https://oldsite.ru/249-kholodilniki на новом сайте будет https://newsite.ru/catalog/kholodilniki

    товар
    https://oldsite.ru/kholodilniki/86930-kholodilniki-samsung-rb-33-j3420bc-12398226.html на новом сайте будет https://newsite.ru/catalog/kholodilniki/kholodilniki-samsung-rb-33-j3420bc/
     
    Последнее редактирование: 17 мар 2019
  2. sol_los

    sol_los

    Регистр.:
    17 окт 2011
    Сообщения:
    384
    Симпатии:
    231
    храни не в htaccess, а в базе данных - два сопоставленных url-а. ищи первый отдавай в php на редирект второй.
     
    p2rcoder нравится это.
  3. p2rcoder

    p2rcoder Нарушитель

    Регистр.:
    16 июл 2012
    Сообщения:
    321
    Симпатии:
    146
    спасибо, может кто знает готовые модули/решения для битрикса, которые такое умеют делать (при этом вы пробовали, потому что на маркетплейсе я модули вижу, но отзывов у них нет)?
     
    Последнее редактирование: 17 мар 2019
  4. sol_los

    sol_los

    Регистр.:
    17 окт 2011
    Сообщения:
    384
    Симпатии:
    231
    вы часто пишете отзывы к купленным продуктам? обычно работает - ну и хорошо, а вот если не работает - сразу хочется пойти и написать гневный отзыв.
    не просто же так они в магазине - модерацию проходят. плюс скриншоты есть, а это уже нужно было заморочиться.
    думаю можно у них даже демку запросить побаловаться.

    кстати, еще один момент. если у вас все url новые точь в точь как старые но только без ID-шников (из престашопа, насколько я догадываюсь). можно тупо написать регулярку, которая будет из запросов определять цифробуквы до дефиса и вырубать их вместе с дефисом, темсамым получая новую строку для редиректа.
    но делать это нужно до срабатывания битриксового SEF
     
    Последнее редактирование модератором: 17 мар 2019
  5. p2rcoder

    p2rcoder Нарушитель

    Регистр.:
    16 июл 2012
    Сообщения:
    321
    Симпатии:
    146
    ну вот я и спрашивал в вопросе про написать регулярку за деньги
     
  6. sol_los

    sol_los

    Регистр.:
    17 окт 2011
    Сообщения:
    384
    Симпатии:
    231
    тогда ты не там ищешь. тебе нужен тот кто конкретно напишет регулярку с условиями if else для htaccess.
    врядли в разделе сео кто-то это умеет. не каждый Php-шник умеет в htaccess регулярки
     
  7. p2rcoder

    p2rcoder Нарушитель

    Регистр.:
    16 июл 2012
    Сообщения:
    321
    Симпатии:
    146
    ну не знаю, на нулледе часто встречаются продвинутые юзеры )
     
  8. Sovenich

    Sovenich Писатель

    Регистр.:
    17 фев 2019
    Сообщения:
    3
    Симпатии:
    0
    Была такая же задача только для 8 тыс товаров, хороший сервер даже не замечает что у него 8 тыс строк на редиректе. Но изначально расматривали этот модуль https://marketplace.1c-bitrix.ru/solutions/goodde.redirect/
     
  9. Alex.Volk

    Alex.Volk Охотник

    Регистр.:
    16 мар 2012
    Сообщения:
    373
    Симпатии:
    1.030
    Интересный вопрос и возможный ответ

    Код:
    RewriteEngine on
    RewriteRule ([0-9]+)-(.*) https://newsite.ru/catalog/$2 [R=301,L]
    RewriteRule ([0-9]+)-(.+)-(-?[0-9]+.html) https://newsite.ru/catalog/$2 [R=301,L]
    
     
    p2rcoder и NightHunter нравится это.
  10. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    266
    Симпатии:
    335
    Правила RewriteRule проверяютя в том порядке, в котором они записаны в файле. Запрос поочерёдно сравнивается с шаблонами в RerwriteRule и при первом же совпадении правило исполняется.
    (.*) совпадает с любой строкой, так что первое правило будет срабатывать и на "kholodilniki/86930-kholodilniki-samsung-rb-33-j3420bc-12398226.html"
    Ну и на новом сайте там слеш в конце и два раза kholodilniki "/catalog/kholodilniki/kholodilniki-samsung-rb-33-j3420bc/"
    Код:
    RewriteRule ^\d+-([^/]+)$ https://newsite.ru/catalog/$1 [R=301,L]
    RewriteRule ^([^/]+/)\d+-([^/]+)-\d+\.html$ https://newsite.ru/catalog/$1$2/ [R=301,L]
    
     
    p2rcoder и Alex.Volk нравится это.