Как настроить 301 редирект и убрать дубли страниц в Joomla
Вообще-то я хотел сделать короткий пост в три абзаца с кодом про редирект с index.php на Джумле :). Пример взят из рабочей практики. В результате вышло…
Запрет дублей страниц сайта для индексирования в поисковых системах — одна из аксиом сео и правильного сайтостроения вообще. По своему опыту могу сказать, что отсутствие 301 редиректов и дубли в индексе не всегда является понижающим фактором. Но при прочих равных, эти факторы могут сыграть свою негативную роль в ранжировании.
Прописывать правильные строчки в файле .htaccecs приходится в любых CMS, не исключая страшной и ужасной Joomla :). К счастью, мы редко используем ее для наших сайтов, предпочитая другие альтернативы — да хоть бы и тот же Вордпресс, если клиенты просят бесплатные движки. Но иногда все-таки приходится — как например, сегодня, когда потратил целых 35 минут своего уникального времени :), чтобы понять, как в Joomla редиректить index.php.
В тырнетах инфы на этот счет вроде бы много, но почти вся она бестолкова и сводится к совету типа «а пропиши запрет на индексацию в robots». Логику Джумлы человеку неподготовленному (а я именно такой :)) понять непросто. В общем, помучился я сегодня, но таки сделал все по-человечески.
Сначала правильный robots.txt для Joomla
В дефолтном роботсе Джумла закрывает все служебные страницы по умолчанию. Единственное, что нужно добавить — это последние 2 строчки:
- Host — насильно указывается ваш адрес сайта для ПC (с www или же без www)
- Sitemap — адрес карты для роботов, сам файл готовится за секунды в бесплатном сервисе 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: primersite.ru (или Host: primersite.ru, если без wwww) Sitemap: http://primersite.ru/sitemap.xml (или Sitemap: http://primersite.ru/sitemap.xml) |
Настройка в Joomla 301 редиректа (www и не www)
Рано или поздно поисковики склеют primersite.ru и http://primersite.ru, но до тех пор в выдаче могут быть дубли, негативно влияющие на продвижение. Поэтому открываем файл .htaccecs и прописываем 301 редирект:
- Для сайта на www
RewriteCond %{HTTP_HOST} ^primersite.ru$ [NC] RewriteRule ^(.*)$ http://primersite.ru/$1 [R=301,L] |
- Для сайта без www
RewriteCond %{HTTP_HOST} ^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://primersite.ru/ [R=301,L] |
Для удобства показываю общий кусок кода из работающего кода .htaccecs в Joomla:
RewriteBase / RewriteEngine On RewriteCond %{HTTP_HOST} ^primersite.ru$ [NC] RewriteRule ^(.*)$ http://primersite.ru/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://primersite.ru/ [R=301,L] |
Ну вот, кажется и все! Все коды рабочие и сайт теперь настроен правильно. Кстати, заодно и посмотрю, как реально настройки скажутся на продвижении: код взят из реального сайта, который уже довольно давно двигается по коммерческим запросам, и по одному ВЧ находится в топе.
Работа для авторов и вебмастеров на бирже фриланса KworkУмеешь писать и хочешь зарабатывать on-line? Регистрируйся на Copylancer, пиши на
Актуальная тема! Как раз на днях нужно было решить эту проблему! 😉
Спасибо, все доходчиво рассписано 😛
Очень пригодилось,не знал как прописать редирект с php
Да, но у меня после редиректа index.php перестает работать компонент aiContactSafe. и это редирект только главной страницы.
Joomla славится своей кривизной)). Где-то напильничком подрихтовать вам нужно. Редирект или запрет к индексации index.php — обязательная рекомендация перед продвижением.
Благодарю! Очень нужная тема! Вот только немного запутано про и без! Надо было один пример показать четко (например без www, чтобы не перемешалось все в голове), чтобы было понятней. Смотрите, мне нужно, чтобы главным зеркалом был сайт mysite.ru (без www) Правильно ли я указываю параметры в .htaccecs
RewriteCond %{HTTP_HOST} ^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]
Проверить легко: наберите с www и если редиректит на без www, все ок 🙂
Благодарю! Не OK 🙁 Значит ошибся где-то!
Не получается!!!
Подскажите, пожалуйста, что не так я сделал для варианта, когда главным должен быть url без http://?
RewriteCond %{HTTP_HOST} ^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]
Что означает RewriteRule? Он назначает правила «на» которые делать редирект или «c» чего делать редирект?
Алексей, пробейте по ссылке http://devaka.ru/articles/redirect-301
Там все очень подробно расписано, должно работать. Может, у вас закомментировано что-то случайно, команды не работают?
Спасибо! По логике получается так надо было:
RewriteCond %{HTTP_HOST} ^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 становиться симпатичным, но страницы перестают показываться 🙁
«* Перенаправление URL – Нет
Важен ли этот параметр? При включении из адресной строки исчезает /index.php URL становиться симпатичным, но страницы перестают показываться»
С этим вопросом, наверное, разобрался. Оказывается на хостинге должен быть включен mod_rewrite Обратился к хостеру, когда включит, по идее должно все заработать. Посмотрим! Сообщу как свершиться, может кому-нибудь и помогут мои поиски причины 🙂
Да! именно на сервере была проблема с mod_rewrite! Внимание, то, что joomla показывает, что он включен, еще не означает, что он действительно работает!!! Хостеру пришлось объяснить, что сайт нормально работает на других серверах, после чего хостер все же, что-то сделал у себя в настройках и сайт заработал. Что именно он сделал неизвестно, но главное результат.
Теперь другой вопрос! Почему страница с индексом /index.php/aktsii спокойно открывается?