Добавить в корзинуПозвонить
Найти в Дзене

Настройка переадресации с K2 на Joomla: мой опыт и советы

Недавно я столкнулся с задачей переноса сайта с Joomla K2 (vizator.ru) на новую Joomla (jedig.ru). Главной целью было настроить переадресацию старых URL на новые, чтобы сохранить SEO и удобство для пользователей. Процесс оказался не таким простым, как я ожидал, но в итоге всё заработало. Делюсь своим опытом и рассказываю, на что стоит обратить внимание. На старом сайте использовалась Joomla с компонентом K2, а URL имели вид https://vizator.ru/category/alias (например, https://vizator.ru/cooling-heating/proverka-klapanov-kryshki-rasshiritelnogo-bachka). Новый сайт на Joomla использует структуру http://jedig.ru/cars/id-alias (например, http://jedig.ru/cars/645-proverka-klapanov-kryshki-rasshiritelnogo-bachka). Задача — сделать 301-редирект со старых URL на новые. Я начал с составления списка соответствий (94 записи) и попытался настроить переадресацию через файл .htaccess. Но первые попытки провалились — вместо редиректов я получал 404 ошибки. Изначально я предположил, что старые URL сод
Оглавление

Недавно я столкнулся с задачей переноса сайта с Joomla K2 (vizator.ru) на новую Joomla (jedig.ru). Главной целью было настроить переадресацию старых URL на новые, чтобы сохранить SEO и удобство для пользователей. Процесс оказался не таким простым, как я ожидал, но в итоге всё заработало. Делюсь своим опытом и рассказываю, на что стоит обратить внимание.

С чего всё началось

На старом сайте использовалась Joomla с компонентом K2, а URL имели вид https://vizator.ru/category/alias (например, https://vizator.ru/cooling-heating/proverka-klapanov-kryshki-rasshiritelnogo-bachka). Новый сайт на Joomla использует структуру http://jedig.ru/cars/id-alias (например, http://jedig.ru/cars/645-proverka-klapanov-kryshki-rasshiritelnogo-bachka). Задача — сделать 301-редирект со старых URL на новые.

Я начал с составления списка соответствий (94 записи) и попытался настроить переадресацию через файл .htaccess. Но первые попытки провалились — вместо редиректов я получал 404 ошибки.

Проблемы и их решение

1. Ошибка в структуре URL

Изначально я предположил, что старые URL содержат ID K2, например, cooling-heating/1-proverka-klapanov-kryshki-rasshiritelnogo-bachka. Написал правила в .htaccess с учётом этого:

RewriteRule ^cooling-heating/1-proverka-klapanov-kryshki-rasshiritelnogo-bachka$ http://jedig.ru/cars/645-proverka-klapanov-kryshki-rasshiritelnogo-bachka [R=301,L]

Тест показал, что такие URL работают, но внутренние ссылки на сайте были без ID (cooling-heating/proverka-klapanov-kryshki-rasshiritelnogo-bachka), и они вели на 404. Пришлось переписать все правила под реальную структуру.

2. Проверка mod_rewrite

Когда переадресация не работала даже с правильными URL, я заподозрил, что проблема в сервере. Проверил с помощью простого теста:

RewriteEngine On
RewriteBase /
RewriteRule ^test$ http://jedig.ru [R=301,L]

Переход на https://vizator.ru/test перенаправил на http://jedig.ru, значит, mod_rewrite активен. Если бы не сработало, пришлось бы включить модуль командой sudo a2enmod rewrite и перезапустить Apache (sudo systemctl restart apache2).

3. Конфликт условий в .htaccess

В первом варианте файла я добавил условия для пропуска новых страниц:

RewriteCond %{REQUEST_URI} !^cooling-heating/ [NC]
RewriteCond %{REQUEST_URI} !^engine/ [NC]
RewriteRule ^ - [L]

Но они блокировали переадресацию, потому что применялись ко всем запросам, включая старые URL. Исправил, объединив категории в одно условие:

RewriteCond %{REQUEST_URI} !^(cooling-heating|engine|body-chassis)/ [NC]
RewriteRule ^ - [L]

Итоговый .htaccess

После всех правок получился рабочий файл, который учитывает внутренние ссылки без ID K2:

RewriteEngine On
RewriteBase /

RewriteRule ^cooling-heating/proverka-klapanov-kryshki-rasshiritelnogo-bachka$ http://jedig.ru/cars/645-proverka-klapanov-kryshki-rasshiritelnogo-bachka [R=301,L]
RewriteRule ^engine/disel-engine-td5-base-manual$ http://jedig.ru/cars/646-disel-engine-td5-base-manual [R=301,L]
# ... (остальные правила)

RewriteCond %{REQUEST_URI} !^(cooling-heating|engine|body-chassis|lubricants-cleaners|general-information|pages|body-electrics|axles-suspension|gearbox-clutch-transfer-gearbox|fuel-emission-systems|tuning|vnedorozhnyj-pritsep)/ [NC]
RewriteRule ^ - [L]

На что обратить внимание

  1. Точная структура URL: Проверьте, как выглядят реальные ссылки на сайте и в поисковиках. У меня они отличались от ожидаемых (без ID), и это вызвало путаницу.
  2. Работа mod_rewrite: Убедитесь, что модуль включён, иначе .htaccess будет игнорироваться. Используйте тестовое правило для проверки.
  3. AllowOverride: В конфигурации Apache (/etc/apache2/sites-available/000-default.conf) должно быть AllowOverride All для директории сайта.
  4. Порядок правил: Переадресации должны идти перед условиями пропуска, иначе старые URL могут не обработаться.
  5. Кэш: После изменения .htaccess очищайте кэш браузера или проверяйте в режиме инкогнито.
  6. Логи сервера: Если что-то не работает, смотрите /var/log/apache2/error.log — там могут быть подсказки.

Вывод

Настройка переадресации оказалась испытанием, но в итоге я разобрался. Главное — понять структуру URL, проверить сервер и правильно организовать правила. Теперь все старые ссылки с vizator.ru ведут на новые страницы jedig.ru, и трафик с SEO сохранены. Надеюсь, мой опыт поможет вам избежать моих ошибок!

Код на питоне для формирования ссылок. Но с ошибочкой :)