В данном обзоре рассмотрим базовые настройки cms joomla, для правильной seo оптимизации, которые позволят не использовать кучу дополнительных расширений и тем самым существенно снизят как нагрузку выполнения, так и увеличат нормо показатели оптимизационного отображения.
Первичная настройка оптимизации joomla.
Как и в любой системе управления сайтом, существуют основные принципы базовой оптимизационной настройки. Для joomla характерно наличие в “коробочной версии” настраиваемых файлов: robots.txt, htaccess.txt. Так же из под админ панели возможно автоматическое добавление префикса (.html) к окончанию в адресе страниц сайта, и настраивание редиректа системным компонентом “Перенаправление”. На этом отличительные особенности заканчиваются, а начинается достаточно кропотливый труд в связи с особенностями вывода данного движка.
Итак согласно пунктам, что необходимо сделать в первую очередь, для первичной оптимизационной настройки joomla:
1. Закрыть Ваш сайт от индексации.
Огромное число начинающих пользователей допускают эту ошибку. Устанавливают демо сайт на joomla, без предварительной очистки демо-содержимого: ссылки, материалы, контакты, архивы, баннеры и т.д. Не говоря о присутствующих мета форматах.
Делается это внедрением в файл robots.txt, следующей записи, все остальное удалить:
Disallow: /
2. Первичные метаданные сайта
Название и описание Вашего сайта во вкладке панели управления “Общие настройки”, что бы в отображаемом коде главной страницы Вы получили вот это:
<meta name="description" content="Описание вашего сайта" />
<title>Название Вашего сайта</title>
3. Настройка адресов страниц сайта joomla.
На своем хостинге переименуйте файл htaccess.txt, в файл .htaccess. Далее в панели управления в “Общих настройках” подтвердите включение ЧПУ и перенаправление URL. Добавление суффикса к URL – это уже по желанию.

4. Удаление демо данных joomla.
Проверьте наличие данных в следующих разделах панели управления: материалы, категории, баннеры, контакты, ссылки, ленты новостей, не забудьте в медиа-менеджере удалить демо изображения. Так же следует удалить лишние шаблоны сайта и административной панели. Зачастую при установке в систему интегрируются демо пользователи, их так же следует удалить. Не забывайте что любые демо данные находятся не только в опубликованном состоянии, но и в архивах, так что не забудьте удалить и их.
4. Убираем копирайт joomla из исходного кода
В этом файле:
/libraries/joomla/document/renderer/html/head.php
Ищем строку со следующим содержимым
<meta name="generator" content=
Комментируем содержимое, что бы получилось так:
/* Don't add empty generators
$generator = $document->getGenerator();
if ($generator)
{
$buffer .= $tab . '<meta name="generator" content="' . htmlspecialchars($generator) . '" />' . $lnEnd;
} */
Другим способом можно убрать злополучный тег генератора joomla, внедрением кода в установленный шаблон:
unset($this->_generator);
Вторичная настройка seo оптимизации joomla.
Вторичная настройка подразумевает правильность отображения вашего сайта на joomla согласно базовых принципов seo, к которым относятся следующие пункты:
1. Настройка файла htaccess для joomla.
Это достаточно обширная тема, и актуальна не только для joomla, но и для любых систем управления. Поэтому в этом обзоре остановимся на ускорении работы сайта и его безопасности (joomla является одним из слабо защищенных движков). Расписывать значения здесь не будем, так как начинающим пользователям достаточно сложно “переварить” такой объем информации касаемо одного файла. Более подробнее разберем в других материалах.
Итак ускоряем работу joomla сайта путем кеширования и сжатия.
Внедряем следующие элементы:
Gzip сжатиe – mod_gzip
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include mime ^text\.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
Gzip сжатиe – mod_deflate
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css
text/javascript application/javascript application/x-javascript
</ifModule>
Кеширование – mod_headers
<ifModule mod_headers.c>
#кэшировать html и htm файлы на один день
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=43200"
#кэшировать css, javascript и текстовые файлы на одну неделю
<FilesMatch "\.(js|css|txt)$">
Header set Cache-Control "max-age=604800"
#кэшировать флэш и изображения на месяц
<FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
Header set Cache-Control "max-age=2592000"
#отключить кэширование
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</ifModule>
Кеширование – mod_expires
<ifModule mod_expires.c>
ExpiresActive On
#по умолчанию кеш в 5 секунд
ExpiresDefault "access plus 5 seconds"
#кэшировать флэш и изображения на месяц
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
#кэшировать css, javascript и текстовые файлы на одну неделю
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"
#кэшировать html и htm файлы на один день
ExpiresByType text/html "access plus 43200 seconds"
#кэшировать xml файлы на десять минут
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
Теперь внедрения в данный файл переменных для безопасности:
Блокируем наиболее “популярные” запросы внедрения
RewriteCond %{QUERY_STRING} proc/self/environ [OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
RewriteCond %{QUERY_STRING} base64_(en|de)code\(.*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
Блокировка инъекций в файлы и базу данных
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
RewriteRule .* - [F]
RewriteCond %{query_string} concat.*\( [NC,OR]
RewriteCond %{query_string} union.*select.*\( [NC,OR]
RewriteCond %{query_string} union.*all.*select [NC]
RewriteRule ^(.*)$ index.php [F,L]
Запрет доступа к файлам и ядру сайта
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} \.php|\.ini|\.xml [NC]
RewriteCond %{REQUEST_URI} \/components\/ [OR]
RewriteCond %{REQUEST_URI} ^\/includes\/|^\/administrator\/includes\/ [OR]
RewriteCond %{REQUEST_URI} \/language\/ [OR]
RewriteCond %{REQUEST_URI} \/libraries\/ [OR]
RewriteCond %{REQUEST_URI} \/modules\/ [OR]
RewriteCond %{REQUEST_URI} \/plugins\/ [OR]
RewriteCond %{REQUEST_URI} \/templates\/ [OR]
RewriteCond %{REQUEST_URI} \/cli\/
RewriteRule ^(.*)$ index.php [R=404,L]
RewriteRule ^(htaccess\.txt|configuration\.php-dist|php\.ini)$ - [F]
2. Настройка файла robots joomla.
Основная задача открыть или закрыть для индексации те или иные страницы или файлы вашего сайта, а так же позволит избавиться от присутствия в поиске “дублей” страниц (это достаточно известная проблема joomla). Про добавление карты сайта подробнее разберем в других материалах.
Итак собственно код добавления к стандартному robots.txt от joomla.
Disallow: /*user/ #пользователи
Disallow: /404 #закрываем 404 ошибку
Disallow: /index.php? #урлы с параметрами
Disallow: /*? #урлы с вопросами
Disallow: /*% #урлы с процентами
Disallow: /*& #урлы со знаком &
Disallow: /index2.php #дубли
Disallow: /index.php #дубли
Disallow: /*tag #облако тегов
Disallow: /*.pdf #ПДФ файлы, на усмотрение
Disallow: /*.swf #Flash, на усмотрению
Disallow: /*=atom #RSS
Disallow: /*=rss #RSS
Disallow: /*com_mailto #форма отправки писем
Disallow: /*pop= #всплывающие окна
Disallow: /*lang=ru #языковую версию
Disallow: /*format= #форматы
Disallow: /*print= #ссылка вывода на печать
Disallow: /*task=vote #голосования
Disallow: /*=watermark #водяные знаки
Disallow: /*=download #Ссылки на скачивание
Allow: /images/ #открываем изображения
Allow: /путь карты сайта #открываем карту сайта
Host: вашсайт.ru
Sitemap: http://адрес карты сайта
Настройка оптимизации материалов joomla
Правильная seo оптимизация вывода материалов joomla – это одна из основных проблем данной системы управления. К сожалению (не знаю с чем связано), но базовая версия joomla выдает материалы с ошибками, которые легко проверяются сервисом от гугл “Инструмент проверки структурированных данных”.
Итак основные ошибки seo оптимизации материалов joomla:
Вывод заголовка материала осуществляется через тег
h2
, а не
h1
Соответственно правильность семантики уже снижена.
Данный “баг” меняется в файле вывода материала в шаблоне или непосредственно в самом com_content. Базовый путь в шаблонах:
/com_content/article/default.php
В нем найти:
<h2 itemprop="name">
<?php echo $this->escape($this->item->title); ?>
</h2>
Заменить на:
<h1 itemprop="name">
<?php echo $this->escape($this->item->title); ?>
</h1>
Ошибки генерации микроформатной разметки от schema article.
Отсутствие вывода тега publisher
Не верный вывод тега image
Используется
itemprop="image"
Необходимо
schema.org/ImageObject
Отсутствие mainEntityOfPage
И т.д.
Для устранения ошибок вывода материалов следует использовать такой код внедрения в файле шаблона вывода материала (путь указан выше)
<article class="item-page <?php echo $this->pageclass_sfx?>" itemscope itemtype="http://schema.org/Article">
<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="<?php echo $this->item->readmore_link; ?>" />
<div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
<div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
<img src="/images/логотип"/>
<meta itemprop="width" content="167">
<meta itemprop="height" content="63">
</div>
<meta itemprop="name" content="название компании">
<div style="display:none;" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">адрес</span>
<span itemprop="postalCode"> индекс</span>
<span itemprop="addressLocality">город </span>
<span itemprop="telephone">телефон</span>
</div>
<div itemprop="image" itemscope itemtype="https://schema.org/ImageObject">
<div class="img-fulltext-<?php echo $images->float_fulltext ? $images->float_fulltext : $params->get('float_fulltext'); ?>"> <img
<?php if ($images->image_fulltext_caption):
echo 'class="caption"'.' title="' .$images->image_fulltext_caption .'"';
endif; ?>
<?php if (empty($images->float_fulltext)):?>
style="float:<?php echo $params->get('float_fulltext') ?>"
<?php else: ?>
style="float:<?php echo $images->float_fulltext ?>"
<?php endif; ?>
src="<?php echo $images->image_fulltext; ?>" itemprop="url" alt="<?php echo $images->image_fulltext_alt; ?>"/>
<div style="display:none;"><img src="<?php echo $images->image_fulltext; ?>" itemprop="contentUrl" alt="<?php echo $images->image_fulltext_alt; ?>"/></div>
<meta itemprop="width" content="800">
<meta itemprop="height" content="800">
</div></div>
Здесь приведен пример изменения основного кода в шаблоне вывода материала.
Таким образом изменив достаточно немного данных в joomla, вы добьетесь правильной seo оптимизации, без использования лишних компонентов и плагинов.