Как правильно удалять товары с сайта на MODX Evolution с помощью 301 редиректов
Удаление товаров с сайта — частая задача для интернет-магазинов, особенно если ассортимент меняется. Неправильное удаление может привести к потере трафика, снижению позиций в поисковых системах и появлению ошибок 404. В этой статье я расскажу, как корректно удалять товары с сайта на MODX Evolution, используя 301 редиректы, чтобы сохранить SEO-показатели и обеспечить удобство для пользователей. Также мы разберём, как решать проблемы с редиректами и как использовать curl
для их проверки.
Почему важно правильно удалять товары?
Когда вы убираете товар из каталога, его страница может быть уже проиндексирована Google или Яндексом, а также содержать внешние ссылки. Простое удаление приведёт к ошибке 404, что:
- Ухудшает пользовательский опыт (посетители видят «Страница не найдена»).
- Снижает ссылочный вес (PageRank) для поисковиков.
- Может привести к временному падению трафика.
Правильное удаление с использованием 301 редиректов помогает перенаправить пользователей и поисковые системы на релевантные страницы, сохраняя SEO-ценность и обеспечивая плавный переход.
Почему 301 редирект — лучший выбор?
301 редирект (постоянное перенаправление) сигнализирует поисковикам, что страница окончательно перемещена на новый адрес. Преимущества:
- Передача SEO-веса: Google передаёт до 90–99% ссылочного веса на новую страницу.
- Улучшение UX: Пользователи автоматически попадают на релевантную страницу.
- Простота настройки: В MODX Evolution редиректы легко реализуются через
.htaccess
.
Альтернативы, такие как 302 редирект (временный) или 404/410, подходят реже, о чём мы поговорим ниже.
Шаги по удалению товаров на MODX Evolution
MODX Evolution — популярная CMS для интернет-магазинов, где товары обычно представлены как ресурсы с ЧПУ (человекопонятными URL). Вот пошаговый план удаления товаров с использованием 301 редиректов.
1. Определите целевые страницы для редиректа
Перед удалением товара решите, куда перенаправлять пользователей:
- Похожий товар: Если товар снят с продажи, но есть аналог, перенаправляйте на его страницу. Например,
/katalog/product1.html
→/katalog/product2.html
. - Родительская категория: Если аналога нет, перенаправляйте на категорию. Например,
/katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/product.html
→/katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html
. - Главная страница: Используйте как последнее средство, если другие варианты не подходят, но это менее эффективно для SEO.
Составьте список пар «старый URL → новый URL». Например:
/katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe-for-professionals-bez-sahara-tetra-pak.html
→/katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html
.
2. Настройте 301 редиректы в .htaccess
В MODX Evolution редиректы обычно настраиваются в файле .htaccess
, который находится в корне сайта. Добавляйте правила редиректа до основного правила ЧПУ MODX, чтобы они обрабатывались в первую очередь.
Пример: Удаляем несколько товаров из категории растительного молока и перенаправляем их на страницу категории.
# Редиректы для удалённых товаров
RewriteRule ^katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/kopiya-moloko-parmalat-bezlaktoznoe-1-8-11l-h-12sht.html$ /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html [R=301,L]
RewriteRule ^katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe-for-professionals-bez-sahara-tetra-pak.html$ /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html [R=301,L]
RewriteRule ^katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/kopiya-rastitelnoe-moloko-5yes-soevoe-s-bananom-for-professionals-bez-sahara-tetra-pak.html$ /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html [R=301,L]
Если вы удаляете много товаров из одной категории, используйте регулярное выражение для упрощения:
RewriteRule ^katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/[^/]+\.html$ /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html [R=301,L]
Это правило перенаправит все .html
страницы в указанной категории на страницу категории.
Полный пример .htaccess
:
AddDefaultCharset utf-8
RewriteEngine On
RewriteBase /
# Защита от внутренних соединений Apache
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]
# Редирект для всех удалённых товаров в категории растительного молока
RewriteRule ^katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/[^/]+\.html$ /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html [R=301,L]
# Исключения для директорий и файлов
RewriteRule ^(manager|assets|js|css|images|img)/.*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]
# ЧПУ для MODX
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
3. Удалите или скройте товары в MODX
- Зайдите в админ-панель MODX («Ресурсы»).
- Найдите товары по их URL (алиасу) или ID.
- Варианты действий:
- Удаление: Полностью удалите ресурс, если уверены, что он не понадобится.
- Скрытие: Снимите галочку «Опубликовано» (
published=0
), чтобы страница не отображалась, но оставалась в базе.
- Если используете плагин каталога (например, Shopkeeper), удалите товары через его интерфейс.
- Очистите кэш MODX: «Управление» → «Очистить кэш».
4. Проверьте редиректы с помощью curl
После настройки редиректов важно проверить, что они работают корректно. Один из лучших инструментов для этого — curl
, утилита командной строки, которая позволяет отправлять HTTP-запросы и анализировать ответы сервера. Вот как использовать curl
для проверки 301 редиректов:
Установка curl
- Linux/Mac: Обычно
curl
уже установлен. Проверьте командойcurl --version
. - Windows: Установите
curl
через пакетный менеджер (например, Chocolatey) или используйте терминал PowerShell, гдеcurl
является псевдонимом дляInvoke-WebRequest
. Для точных результатов установите полноценныйcurl
из официального сайта.
Проверка редиректа
Используйте флаг -I
(или --head
), чтобы получить только заголовки ответа сервера:
curl -I https://example.com/katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe-for-professionals-bez-sahara-tetra-pak.html
Ожидаемый результат:
HTTP/1.1 301 Moved Permanently
Location: https://example.com/katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html
Server: Apache
Date: Sun, 18 May 2025 12:07:00 GMT
HTTP/1.1 301 Moved Permanently
: Указывает, что редирект сработал.Location
: Показывает целевой URL, на который перенаправляется запрос.
Интерпретация результатов
- 200 OK: Страница всё ещё существует (возможно, товар не удалён в MODX или редирект не сработал).
- 404 Not Found: Страница удалена, но редирект не настроен.
- 301 Moved Permanently: Редирект работает, проверьте
Location
, чтобы убедиться, что он ведёт на нужную страницу. - Chain of redirects: Если видите несколько
301
подряд, это указывает на цепочку редиректов, которую нужно устранить.
Дополнительные параметры curl
-L
: Следовать за редиректами, чтобы увидеть конечную страницу:curl -IL https://example.com/katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe-for-professionals-bez-sahara-tetra-pak.html
Это покажет все шаги редиректа.
-v
: Включить подробный вывод для диагностики:curl -Iv https://example.com/katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe-for-professionals-bez-sahara-tetra-pak.html
Проверка в браузере
Для дополнительной уверенности откройте URL в режиме инкогнито, чтобы избежать кэша браузера. Если используете Cloudflare, очистите кэш («Caching» → «Purge Everything») перед проверкой.
5. Решение проблем с редиректами
Иногда редиректы не срабатывают. Например, при настройке редиректа для /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe-for-professionals-bez-sahara-tetra-pak.html
правило в .htaccess
не работало:
RewriteRule ^katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe-for-professionals-bez-sahara-tetra-pak.html$ /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html [R=301,L]
Диагностика с помощью curl
:
Мы использовали:
curl -I https://example.com/katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe-for-professionals-bez-sahara-tetra-pak.html
Если ответ возвращал 200
или 404
, это указывало, что редирект не срабатывает.
Возможные причины:
- Опечатка в URL: Алиас в MODX или запросе может отличаться (например, лишний дефис или кодировка символов). Проверьте точный алиас в админ-панели MODX.
- Кэширование: Cloudflare, MODX или браузер могут кэшировать старый ответ (например, 404 или 200).
- Конфликт правил: Другие правила в
.htaccess
или настройки хостинга могут перехватывать запрос. - Страница всё ещё существует: Если ресурс не удалён или опубликован в MODX, он обрабатывается CMS, а не
.htaccess
.
Решение: Мы заменили проблемное правило на регулярное выражение:
RewriteRule ^katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe.*\.html$ /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html [R=301,L]
Это правило игнорирует часть URL после mindalnoe
и перенаправляет любой .html
файл, начинающийся с rastitelnoe-moloko-5yes-mindalnoe
. После очистки кэша MODX и Cloudflare редирект заработал.
Рекомендации при проблемах:
- Используйте
curl -I
для проверки статуса ответа и точногоLocation
. - Очистите кэш браузера, MODX и Cloudflare.
- Убедитесь, что проблемный ресурс удалён или не опубликован (
published=0
) в MODX. - Проверьте логи сервера (
/var/log/apache2/error.log
) на ошибки. - Если редиректы для многих товаров не срабатывают, используйте общее правило:
RewriteRule ^katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/[^/]+\.html$ /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html [R=301,L]
Альтернативы 301 редиректу
В некоторых случаях 301 редирект может быть не лучшим решением:
- 404 (Страница не найдена): Используйте, если нет релевантной страницы для перенаправления. MODX автоматически возвращает 404 для удалённых ресурсов, если настроена страница ошибки.
- 410 (Удалено навсегда): Подходит для страниц, которые никогда не вернутся. Пример в
.htaccess
:RewriteRule ^katalog/bakaleya/old-product.html$ - [R=410,L]
- Динамические редиректы через плагин: Плагин вроде Redirector позволяет управлять редиректами через админ-панель, что удобно для больших каталогов.
Когда использовать 404/410? Если товар не имеет аналогов и перенаправление на категорию нерелевантно, 410 лучше для SEO, так как явно говорит поисковикам, что страница удалена.
SEO-рекомендации
Чтобы минимизировать влияние удаления товаров на SEO:
- Обновите sitemap.xml: Исключите удалённые страницы и добавьте целевые (например, категории).
- Уведомите поисковики:
- В Google Search Console используйте «Проверка URL» для запроса переиндексации старых URL.
- В Яндекс.Вебмастере аналогично обновите индекс.
- Проверьте битые ссылки: Используйте Screaming Frog или Ahrefs, чтобы найти внешние ссылки на удалённые товары и обновить их.
- Мониторьте логи сервера: Ищите 404 ошибки, чтобы выявить пропущенные редиректы.
Пример из практики
На сайте интернет-магазина на MODX Evolution потребовалось удалить несколько товаров из категории растительного молока, например:
/katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe-for-professionals-bez-sahara-tetra-pak.html
/katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/kopiya-moloko-parmalat-bezlaktoznoe-1-8-11l-h-12sht.html
Все товары перенаправлялись на страницу категории /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html
. Изначально одно из правил для миндального молока не срабатывало:
RewriteRule ^katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe-for-professionals-bez-sahara-tetra-pak.html$ /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html [R=301,L]
С помощью curl -I
мы выяснили, что сервер возвращал 404
или 200
, а не 301
. Проблема была решена заменой на регулярное выражение:
RewriteRule ^katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/rastitelnoe-moloko-5yes-mindalnoe.*\.html$ /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html [R=301,L]
В итоге использовали общее правило для всех товаров в категории:
RewriteRule ^katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko/[^/]+\.html$ /katalog/bakaleya/molochnaya-produkciya/rastitelnoe-moloko.html [R=301,L]
После настройки:
- Товары были удалены в админ-панели MODX.
- Кэш сайта и Cloudflare очищены.
- Редиректы протестированы через
curl
и браузер. - Google Search Console уведомлена о новых редиректах.
Результат: трафик сохранился, пользователи попадали на страницу категории, а поисковики обновили индекс.
Заключение
Удаление товаров с сайта на MODX Evolution требует продуманного подхода, чтобы не потерять SEO-трафик и не ухудшить пользовательский опыт. 301 редиректы — наиболее эффективный способ перенаправить пользователей и поисковики на релевантные страницы. Используйте curl
для проверки редиректов, а при проблемах — регулярные выражения и очистку кэша. Настраивайте редиректы через .htaccess
, удаляйте товары в MODX, тестируйте изменения и уведомляйте поисковые системы. Следуя этим шагам, вы сохраните позиции сайта и обеспечите удобство для посетителей.
Есть вопросы или нужен пример для вашего сайта? Напишите в комментариях, и я помогу настроить редиректы или разобраться с MODX!