Joomla отличная CMS, я с удовольствием использую её для создания сайтов для организаций. Понятная структура, понятная шаблонизация, понятная админка. Но не всё в ней идеально, потому что нет ничего идеального в этом мире, но к этому нужно стремится. Вот некоторые советы по SEO-оптимизации Joomla:
Joomla и .htaccess
Первым делом после включения SEF(ЧПУ) ссылок и переименования htaccess.txt в .htaccess следует обратить внимание на возможность дублей, которые нужно закрыть, и самое главное с чего нужно начать это исключение НЕзеркала сайта. Т.е. если мудрый яндекс решил что зеркало вашего сайта www.site.ru а не site.ru то вариант без www нужно исключить, а значит настроить 301 редирект.
После строки «RewriteEngine On» в файле .htaccess
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) https://www.site.ru/$1 [R=301,L]
Joomla и .html
Правила хорошего тона в SEO гласят: лучше использовать расширение отображаемого документа. Соответственно настраиваем в админ-панеле Joomla, в общих настройка сайта «Добавлять суффикс к URL». После чего ссылки на статьи будут заканчиваться на .html, но при этом будут работать и те ссылки которые не заканчиваются на .html, а это дубли, то что поисковые системы так не любят и от чего нужно обязательно избавляться. Исправить это можно c помощью добавления в файл .htaccess записи вида:
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]
# Фиксим вход в админку иначе не попадём в неё
Redirect 301 /administrator.html https://www.cityhall64.ru/administrator/index.php
Joomla и index.php
Следующий дубль от которого нужно избавиться это возможность загрузки страницы с файлом index.php в конце URL (www.site.ru/index.php) есть способы сделать это с помощью тех-же правил в .htaccess
RewriteRule ^index.php/(.*) https://www.cityhall64.ru/$1 [R=permanent,L]
Joomla и слэш в конце URL
Всё так-же в .htaccess
RewriteRule ^(.*)/$ /$1 [R=301,L]
А теперь всё то-же самое но на PHP + sitemap.xml в корне Joomla
Бывает некоторые правила вписанные в .htaccess просто не работают, потому что гладиолус. Бывает что они нарушают работу других правил, которые для чего-то были добавлены, например для работы как-го нибудь компонента или расширения или скрипта, в общем бывает что нужно сделать всё то-же самое вышеописанное, но без вмешательства в .htaccess, так-же добавим возможность поисковикам видеть в корне сайта файл sitemap.xml, раньше в Joomla был чудный плагин XMap и можно было сделать редирект с его GET-ссылки, позже он переименовался в плагин OSmap, но ссылка на него в htaccess стала вызывать сбои, по этому я решил эту проблему в коде PHP для всего этого этого создадим файл seofix.php в корне сайта, а в корневой index.php в самом верху после тега index.php добавим строку:
1 2 |
<?php include_once 'seofix.php'; |
Содержимое файла seofix.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php namespace seo; // упакуем все переменные в своё пространство имён, дабы избежать переопределения. # Константы define('OSMAP_PATH', '/index.php?option=com_osmap&view=xml&tmpl=component&id=1'); $URI = $_SERVER['REQUEST_URI']; $HOST = $_SERVER['HTTP_HOST']; # Проблема index.php if(preg_match("/^\/index.php(.*)/", $URI, $NURI)){ header("HTTP/1.1 301 Moved Permanently"); header("Location: https://".$HOST.$NURI[1]); exit(); } # Проблема sitemap.xml в корне if($URI=="/sitemap.xml"){ die(file_get_contents('https://'.$HOST.OSMAP_PATH)); } # Проблема ссылок без .html if($URI!="/" && !preg_match("/(\.html|\.xml)$/", $URI)){ header("HTTP/1.1 301 Moved Permanently"); header('Location: '.$URI.'.html'); exit(); } |