Как настроить 301 редирект и убрать дубли страниц в Joomla


Вообще-то я хотел сделать короткий пост в три абзаца с кодом про редирект с index.php на Джумле :).  Пример взят из рабочей практики. В результате вышло…

Запрет дублей страниц сайта для индексирования в поисковых системах — одна из аксиом сео и правильного сайтостроения вообще. По своему опыту могу сказать, что отсутствие 301 редиректов и дубли в индексе не всегда является понижающим фактором. Но при прочих равных, эти факторы могут сыграть свою негативную роль в ранжировании.

Прописывать правильные строчки в файле .htaccecs приходится в любых CMS, не исключая страшной и ужасной Joomla :). К счастью, мы редко используем ее для наших сайтов, предпочитая другие альтернативы — да хоть бы и тот же Вордпресс, если клиенты просят бесплатные движки. Но иногда все-таки приходится — как например, сегодня, когда потратил целых 35 минут своего уникального времени :), чтобы понять, как в Joomla редиректить index.php.

В тырнетах инфы на этот счет вроде бы много, но почти вся она бестолкова и сводится к совету типа «а пропиши запрет на индексацию в robots». Логику Джумлы человеку неподготовленному (а я именно такой :)) понять непросто. В общем, помучился я сегодня, но таки сделал все по-человечески.

Сначала правильный robots.txt для Joomla

В дефолтном роботсе Джумла закрывает все служебные страницы по умолчанию. Единственное, что нужно добавить — это последние 2 строчки:

  • Host — насильно указывается ваш адрес сайта для ПC (с www или же без www)
  • Sitemap — адрес карты для роботов, сам файл готовится за секунды в бесплатном сервисе www.xml-sitemaps.com. Скачиваем готовый файл, заливаем в корень сайта, прописываем нужную строчку.
User-agent: *
Disallow: /administrator/
Disallow: /cache/
Disallow: /cli/
Disallow: /components/
Disallow: /images/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Disallow: /libraries/
Disallow: /logs/
Disallow: /media/
Disallow: /modules/
Disallow: /plugins/
Disallow: /templates/
Disallow: /tmp/
Disallow: /xmlrpc/
Host: www.primersite.ru (или Host: primersite.ru, если без wwww)
Sitemap: http://www.primersite.ru/sitemap.xml (или Sitemap: http://primersite.ru/sitemap.xml)

Настройка в Joomla 301 редиректа (www и не www)

Рано или поздно поисковики склеют www.primersite.ru и http://primersite.ru, но до тех пор в выдаче могут быть дубли, негативно влияющие на продвижение. Поэтому открываем файл .htaccecs и прописываем 301 редирект:

  • Для сайта на www
RewriteCond %{HTTP_HOST} ^primersite.ru$ [NC]
RewriteRule ^(.*)$ http://www.primersite.ru/$1 [R=301,L]
  • Для сайта без www
RewriteCond %{HTTP_HOST} ^www.primersite\.ru$ [NC]
RewriteRule ^(.*)$ http://primersite.ru/$1 [R=301,L]

Настройка 301 редиректа с index.php

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.primersite.ru/ [R=301,L]

Для удобства показываю общий кусок кода из работающего кода .htaccecs в Joomla:

RewriteBase /
RewriteEngine On
RewriteCond %{HTTP_HOST} ^primersite.ru$ [NC]
RewriteRule ^(.*)$ http://www.primersite.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.primersite.ru/ [R=301,L]

Ну вот, кажется и все! Все коды рабочие и сайт теперь настроен правильно. Кстати, заодно и посмотрю, как реально настройки скажутся на продвижении: код взят из реального сайта, который уже довольно давно двигается по коммерческим запросам, и по одному ВЧ находится в топе.

Работа для авторов и вебмастеров на бирже фриланса Kwork
Умеешь писать и хочешь зарабатывать on-line? Регистрируйся на Copylancer, пиши на TurboText!

Обсуждение: 13 комментариев

  1. Актуальная тема! Как раз на днях нужно было решить эту проблему! 😉

    Ответить
  2. Павел:

    Спасибо, все доходчиво рассписано 😛

    Ответить
  3. Очень пригодилось,не знал как прописать редирект с php

    Ответить
  4. Александр:

    Да, но у меня после редиректа index.php перестает работать компонент aiContactSafe. и это редирект только главной страницы.

    Ответить
    1. Joomla славится своей кривизной)). Где-то напильничком подрихтовать вам нужно. Редирект или запрет к индексации index.php — обязательная рекомендация перед продвижением.

      Ответить
  5. Алексей:

    Благодарю! Очень нужная тема! Вот только немного запутано про www. и без! Надо было один пример показать четко (например без www, чтобы не перемешалось все в голове), чтобы было понятней. Смотрите, мне нужно, чтобы главным зеркалом был сайт mysite.ru (без www) Правильно ли я указываю параметры в .htaccecs

    RewriteCond %{HTTP_HOST} ^mysite.ru$ [NC]
    RewriteRule ^(.*)$ http://www.mysite.ru/$1 [R=301,L]
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://www.mysite.ru/ [R=301,L]

    Ответить
    1. Проверить легко: наберите с www и если редиректит на без www, все ок 🙂

      Ответить
      1. Алексей:

        Благодарю! Не OK 🙁 Значит ошибся где-то!

        Ответить
  6. Алексей:

    Не получается!!!
    Подскажите, пожалуйста, что не так я сделал для варианта, когда главным должен быть url без http://www.?

    RewriteCond %{HTTP_HOST} ^mysite.ru$ [NC]
    RewriteRule ^(.*)$ http://www.mysite.ru/$1 [R=301,L]
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://www.mysite.ru/ [R=301,L]

    Что означает RewriteRule? Он назначает правила «на» которые делать редирект или «c» чего делать редирект?

    Ответить
    1. Алексей, пробейте по ссылке http://devaka.ru/articles/redirect-301
      Там все очень подробно расписано, должно работать. Может, у вас закомментировано что-то случайно, команды не работают?

      Ответить
      1. Алексей:

        Спасибо! По логике получается так надо было:

        RewriteCond %{HTTP_HOST} ^www.mysite\.ru$ [NC]
        RewriteRule ^(.*)$ http://mysite.ru/$1 [R=301,L]
        RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
        RewriteRule ^index\.php$ http://mysite.ru/ [R=301,L]

        Но все равно не работает 🙁 В самой joomla надо ли включать какие нибудь параметры? У меня включено:
        * Включить SEF (ЧПУ) — Да
        Отключено:
        * Перенаправление URL — Нет
        Важен ли этот параметр? При включении из адресной строки исчезает /index.php URL становиться симпатичным, но страницы перестают показываться 🙁

        Ответить
  7. Алексей:

    «* Перенаправление URL – Нет
    Важен ли этот параметр? При включении из адресной строки исчезает /index.php URL становиться симпатичным, но страницы перестают показываться»

    С этим вопросом, наверное, разобрался. Оказывается на хостинге должен быть включен mod_rewrite Обратился к хостеру, когда включит, по идее должно все заработать. Посмотрим! Сообщу как свершиться, может кому-нибудь и помогут мои поиски причины 🙂

    Ответить
  8. Алексей:

    Да! именно на сервере была проблема с mod_rewrite! Внимание, то, что joomla показывает, что он включен, еще не означает, что он действительно работает!!! Хостеру пришлось объяснить, что сайт нормально работает на других серверах, после чего хостер все же, что-то сделал у себя в настройках и сайт заработал. Что именно он сделал неизвестно, но главное результат.

    Теперь другой вопрос! Почему страница с индексом /index.php/aktsii спокойно открывается?

    Ответить

Добавить комментарий

Ваш e-mail не будет опубликован.

© 2020 Мир Эманно ·  Дизайн и техподдержка: Goodwinpress.ru