Втрата позицій після оновлення інтернет-магазину безпосередньо пов'язана з помилками в технічному SEO. Пошуковик не може зіставити старий і новий стан сайту та знижує авторитет сторінок. У статті 8 причин випадання з індексації на стеку Joomla+VirtueMart і що робити, щоб цього не відбулося.
Основні причини помилок у технічному SEO стеку Joomla+VirtueMart
Система Google постійно переоцінює все що зібрали краулери, зокрема порівнює чи дійсно стара сторінка і нова є однаковими. У разі відсутності 301 редиректу або якщо canonical неточний, зіставити URL неможливо.
Стек Joomla+VirtueMart тяжіє до дублів. Один товар може бути доступний за різними URL. При міграції дублів стає більше.
VirtueMart генерує префікс /component/virtuemart/, якщо не прив'язати товари до пункту меню VirtueMart Default Layout. Canonical баги в шаблонних override виникають при зміні шаблону. Hreflang між мовними версіями краще дописати вручну, оскільки не факт, що буде працювати з коробки.
Порівняно з іншими CMS, Joomla+VirtueMart дає контроль над URL у плані формування структури сайту так як Ви цього хочете. Але після кожного оновлення потрібно перевіряти, що структура URL не змінилася. Детальніше про те, коли залишатися на Joomla+VirtueMart, а коли переходити, у статті детальне порівняння Joomla+VirtueMart з альтернативами.
8 причин втрати позицій, оглядова таблиця
Більшість із цих причин неочевидні.
| Причина | Чому ламається | Як уникнути |
|---|---|---|
| №1 Втрата карти 301 редиректів | Старі URL повертають 404 або масовий редирект на головну (soft 404) | Скласти таблицю старий URL до нового. Масовий редирект на головну сторінку сайту заборонений |
| №2 Canonical конфлікт VirtueMart | Шаблон додає canonical поверх canonical VirtueMart | Перевірити views/productdetails/view.html.php після кожної зміни шаблону |
| №3 Hreflang розрив | Втрачаються alternate посилання між мовними версіями | Перевірити canonical плюс alternate у head або sitemap після міграції |
| №4 Дублі через Routing і trailing slash | URL з і без слешу в кінці. Це два різних URL | Увімкнути Strict Routing у плагіні System SEF (Joomla 5.2 і новіше) |
| №5 Robots.txt без доопрацювань | robots.txt блокує індексацію |
Перевірити robots.txt через GSC або curl |
| №6 Schema.org Product зникає при міграції | Мікророзмітка у шаблонних файлах не переноситься | Перевірити Rich Results Test після деплою нового шаблону |
| №7 404 у VirtueMart при деревоподібних URL | Видалений товар повертає 200 плюс контент категорії замість 404 | Налаштувати 410 Gone (для серверів Apache директива Redirect 410 на URL видаленої сторінки) для видалених карток товарів |
| №8 У sitemap.xml є дублі | Навіть платні компоненти неадекватно працюють з VirtueMart особливо з деревоподібною структурою URL | Генерація sitemap за допомогою CLI команди через термінал хостингу |
Причина №1 Немає карти 301 редиректів
Без карти 301 редиректів не варто починати міграцію. Як зробити карту:
1. Скануємо сайт через Screaming Frog або sitemap.xml.
2. Робимо таблицю від старого до нового URL.
3. Директиви в .htaccess або в SEF розширенні.
4. Тест URL.
Всі сторінки з трафіком повинні мати один редирект на відповідний новий URL.
sh404SEF, який раніше масово використовувався для SEF URL і редиректів у Joomla, більше не підтримується на сучасних версіях. Як варіант перехід на 4SEF плюс 4SEO.
Детальна покрокова інструкція по SEO чеклісту міграції у статті детальний SEO чек лист міграції Joomla.
Причина №2 Canonical конфлікт VirtueMart
VirtueMart 4 автоматично генерує canonical для товарів, що входять до кількох категорій. Це правильне рішення, але коли в шаблоні або плагіні є власна логіка canonical виникає конфлікт, особливо це стосується сторонніх плагінів.
Місце для перевірки: файл views/productdetails/view.html.php. Там повинен бути блок, що очищає стандартний canonical Joomla перед додаванням canonical VirtueMart. Якщо цього блоку немає або він закоментований то можуть бути проблеми.
Причина №3 Hreflang
Теги у <head> кожної сторінки або посилання в sitemap.xml. Обидва методи не ідеальні. Зміна плагіну мультимовності або перебудова sitemap може зруйнувати alternate зв'язки між мовними версіями.
Правильна структура. Кожна мовна версія містить canonical плюс посилання на всі альтернативні мовні версії.
Причина №4 Дублі через Routing і trailing slash
Joomla 5.2 і новіше є функція Strict Routing у системному плагіні System SEF. При увімкненій опції Enforce a Suffix by Redirect система склеює дублюючі URL і робить 301 на канонічну версію. Але якщо ця опція вимкнена, URL з і без trailing slash, URL з index.php і без нього, URL через /component/virtuemart/ і через прямий alias існують одночасно в індексі.
Особливо важливо перевірити, якщо до міграції Joomla формувала URL без слешу, а після зі слешем.
Безкоштовний аудит проекту модернізації. Перевіримо canonical і trailing slash у Вашій конфігурації.
Причини №5 і №6: втрата якості
Причина №5: Robots.txt некоректно налаштований
Сайт вже на хостингу але разом з robots.txt, що містить директиву Disallow: / блокування для захисту від індексації під час розробки на локальному сервері.
Як перевірити: одразу після деплою запит curl -s https://yourdomain.ua/robots.txt і перевірка GSC Coverage на вкладці Excluded. Якщо з'явилась велика кількість URL зі статусом Blocked by robots.txt. Причина однозначно в robots.txt.
Причина №6: Schema.org Product або FAQPage зникли
Мікророзмітка у VirtueMart знаходиться у файлах шаблону. При зміні шаблону розмітка не переноситься. Обов'язково потрібен аудит технічного SEO.
Після міграції повинна бути як мінімум мікророзмітка: Product плюс Offer (ціна, валюта, наявність).
Причини №7 і №8
Причина №7: 404 у VirtueMart при деревоподібних URL
При увімкненій опції Use full category tree for product links URL товару містить URL вигляду: назва_сайту/назва_категорії/картка_товару. У цьому випадку якщо видалити товар URL картки товарів не дає помилку 404. VirtueMart перенаправляє на батьківську категорію з HTTP 200.
Випадковий текст у slug товару при деревоподібному URL дає той самий 200 плюс контент категорії.
Якщо деревоподібні URL потрібні, налаштувати 410 Gone для видалених SKU через .htaccess.
Причина №8: У sitemap.xml багато дублів
На Joomla+VirtueMart важко згенерувати sitemap.xml щоб коректно були представлені картки товарів VirtueMart (особливо при деревоподібній структурі магазину).
Пов'язано з причиною №7. Реальна категорія товарів плюс десять лівих URL з однаковим контентом з категорією.
Як правильно. Кастомна генерація sitemap через CLI скрипт під VirtueMart логіку. Обов'язковий фільтр: перевірка HTTP 200 OK і кількість сторінок у sitemap.xml.
Замовити консультацію. Розберемо стан sitemap і canonical у Вашому магазині.
Перевірка перед встановленням сайту на
Перевірки виконуються до встановлення сайту на хостинг.
- 301 карта редиректів. Сканування Screaming Frog або XML sitemap старого сайту, таблиця старий URL до нового. Масовий редирект на головну заборонений.
- Canonical VirtueMart. Перевірити
views/productdetails/view.html.phpна наявність canonical від плагінів або шаблону. - Hreflang UA і RU. Перевірити canonical плюс alternate на мовних версіях. Метод (head або sitemap), якщо вибираєте обидва вони повинні повністю відповідати один одному.
- Strict Routing і trailing slash. Увімкнути System SEF (Joomla 5.2 і новіше), перевірити URL з і без слешу через curl.
- Robots.txt. Перша перевірка одразу після деплою.
curl -s https://yourdomain.ua/robots.txt. Якщо єDisallow: /, сайт закритий від індексації. - Schema.org. Rich Results Test на 3 товарних сторінках після зміни шаблону. Перевірити Product, Offer, FAQPage.
- 404 VirtueMart. Налаштувати для сервера Apache директиву Redirect 410 або прапор [G] на URL видаленої картки. Тест:
curl -Iпо URL видаленої картки товару. - Sitemap.xml. Генерація sitemap.xml вручну або cron через cli команду обов'язково з фільтром HTTP 200 OK і кількістю знайдених URL.
Детальна покрокова інструкція з прикладами команд і скриптів у статті детальний SEO чек лист міграції Joomla.
Часті питання
Чи можна оновити Joomla 3 до Joomla 5 без втрати ЧПУ?
Напряму від Joomla 3 до Joomla 5 ні. Тільки так: від 3.x через 3.10.x і 4.4.x до 5.x. Alias статей, категорій і menu items переносяться разом з контентом. Для URL, де структура змінилася (наприклад, стаття переїхала в іншу категорію або alias відредагований), потрібен 301 редирект у <code>.htaccess</code> або через Joomla Redirect Manager.
Як перевірити що VirtueMart не віддає код 200 на видалені картки товарів?
В адмінці VM видаліть товар. Виконайте команду curl -I https://yourdomain.ua/category/test-product-1234. Якщо відповідь 200, а не 404, то це погано.
Чому категорії VirtueMart погано індексуються після оновлення?
Найчастіше це накопичення неіснуючих URL. URL видалених або неіснуючих товарів повертають сторінку категорії, Googlebot фіксує їх як сторінки з дублями. Google не розуміє, який URL канонічний для категорії, і знижує авторитет всім варіантам.
Який підхід до sitemap рекомендуєте для Joomla+VirtueMart?
Генерація через CLI скрипт: єдиний на сьогодні робочий варіант який я знаю. Штатні sitemap плагіни не розуміють специфіку VirtueMart.
Як подати Change of Address у GSC при зміні домену?
Після налаштування 301 редиректів перевіряєте через curl що вони спрацьовують, потім у GSC додаєте новий домен і запускаєте Change of Address. Change of Address без серверних 301 не дає ефекту.
Зберігається чи canonical VirtueMart при зміні шаблону?
Залежить від наявності override в <code>views/productdetails/view.html.php</code>. VirtueMart 4 автоматично формує canonical для товарів у кількох категоріях. Але якщо в новому шаблоні або сторонньому плагіні є інша логіка canonical, буде дубль тегів.
sh404SEF або 4SEF?
sh404SEF більше не підтримується. Перехід: 4SEF плюс 4SEO. Встановлювати 4SEF потрібно до оновлення ядра. Порядок дій: аудит поточних URL і redirect правил sh404SEF, встановлення 4SEF, перенесення правил, оновлення Joomla.