В старых версиях Joomla URL адрес формировался по схеме [id материала + алиас материала]
. Например, 145-my-article-alias
. Однако. старый роутер Joomla был не идеален и плодил дубли страниц, с чем усиленно боролись СЕО специалисты с помощью различных плагинов и хаков ядра CMS.
Начиная с версии Joomla 3.8 в ядро был включён новый роутер, лишенный этих недостатков. Так же его отличало то, что он убирал id статьи из URL адреса. А это в свою очередь приводило к проблемам на больших сайтах, так как у них уже много страниц было в индексе поисковых систем. Поэтому, даже при обновлении сайта на Joomla 4 и Joomla 5 многие старые сайты вынуждены были оставлять включённым старый роутер.
Решение проблемы
Решение проблемы довольно простое: нужно сохранить id
материалов Joomla в алиасы и после этого отключить старый роутер Joomla. В базе данных к каждому алиасу спереди добавляется id
статьи, что приводит его к виду, который формировал старый роутер Joomla и таким образом URL страницы будет сохранён, но под капотом Joomla будет работать уже новый роутер.
Для этой задачи был написан плагин Console - Save old articles aliases. Подключитесь к вашему серверу по SSH (вам может помочь статья Joomla 4: мощь CLI приложений), перейдите в папку CLI вашего сайта и выполните команду php joomla.php oldarticlesaliases:save
. В этом случае будут обработаны все статьи на сайте без исключений.
Если добавить аргумент test - php joomla.php oldarticlesaliases:save test
- то вы увидите какие именно изменения будут проведены плагином, но сами изменения не будут применены.
Для того, чтобы обработать статьи только выбранных категорий укажите id этих категорий в опции --cats через запятую без пробелов. Например, --cats=12,140,211
. Команда в этом случае будет выглядеть php joomla.php oldarticlesaliases:save --cats=12,140,211
.
Плагин пригодится вебмастерам и digital агенствам, которые обновляют сайты на Joomla до современных актуальных версий.
Демо видео на примере JoomlaPortal
Статья Joomla 4: мощь CLI приложений на Хабре
#расширения #видео