Как массово добавить 301 редиректы?

Здравствуйте!
Был обновлен старый сайт. Клиент решил добавить вложенность, которой ранее не было. Т.е. ссылки на все статьи теперь имеют вид site.ru/articles/business/new-cryptomarkets.html, когда ранее был адрес вида site.ru/new-cryptomarkets.html
Статей много, категории разные. Как можно удобно прописать все 301 редиректы? Добавлять кучу записей в htaccess как-то слишком муторно.
Lori
22 октября 2025, 10:07
modx.pro
527
0

Комментарии: 6

Артур Шевченко
22 октября 2025, 10:08
+1
autoRedirector
    Lori
    22 октября 2025, 10:15
    0
    Спасибо! Но видимо я не понял логику. Пишет, что он сам создаст правила при изменении урлов. Вот я включил в системных настройках «Использование вложенных», нажал «Обновить URI-ссылки» в меню Управление, но правила не создались и 301 не происходит при переходе на старые ссылки.
      Lori
      22 октября 2025, 10:18
      0
      Попробую, спасибо. autoRedirector пока не помог. Но все же получается нужно будет условным Console вытащить все старые ссылки, сопоставить им новые и импортировать в easyRedirects?
        Наумов Алексей
        22 октября 2025, 10:41
        +1
        Да, конечно, само собой ничего магически не произойдет.
      SYAN
      09 февраля 2026, 01:44
      0
      решал эту проблему следующим образом
      1. установил autoRedirector
      2. далее через phpMyAdmin
      3. экспортировал со старого сайта modx_site_content
      4. залил в базу к новому с именем modx_site_content_old
      5. сравнил две базы. если у одинаковых id ресурсов значения uri не совпадают, то добавил новые редиректы в базу modx_ar_rules
      6. удалил дубликаты записей в modx_ar_rules
      7. удалил modx_site_content_old
      INSERT INTO `modx_ar_rules` (`res_id`, `context_key`, `uri`)
      SELECT
          sc.id AS res_id,
          'web' AS context_key,
          sc2.uri AS uri
      FROM
          modx_site_content sc
          LEFT JOIN modx_site_content_old sc2 ON sc.id = sc2.id
      WHERE
      sc.uri <> sc2.uri; -- uri не совпадают
      
      
      DELETE FROM `modx_ar_rules`
      WHERE id NOT IN (
          SELECT `min_id`
          FROM (
              SELECT MIN(id) AS min_id
              FROM modx_ar_rules
              GROUP BY `res_id`, `context_key`, `uri`
          ) AS keep
      );
      все четенько на 7К ресурсов в несколько кликов
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6