Как и многие универсальные CMS, форум phpbb3 имеет лишние функции, лишний код, в нем стоит закрыть лишние ссылки (от индексации в поисковых системах).
Первое, что стоит сделать, это закрыть от индексации поисковиками страницы, на которые ведут внутренние ссылки, не несущие информации, или дублирующие ее.
Спамеры регистрируются на форумах ради того, чтобы разместить в профиле ссылку, в надежде, что профиль не закрыт от индексации. Phpbb3, похоже, требует авторизации для просмотра профиля (т.е. не доступен поисковым машинам, а значит, ссылка закрыта от индексации), но все-равно стоит избавиться от лишних обращений поисковиков к форуму.
Итак, вот как должен выглядеть файл robots.txt, если форум лежит в корне (например, на поддомене):
User-agent: * Disallow: /adm/ Disallow: /cache/ Disallow: /docs/ Disallow: /download/ Disallow: /faq.php Disallow: /files/ Disallow: /images/ Disallow: /includes/ Disallow: /language/ Disallow: /memberlist.php Disallow: /posting.php Disallow: /search.php Disallow: /store/ Disallow: /styles/ Disallow: /ucp.php Disallow: /cron.php Disallow: /report.php Disallow: /pub/privacy.php
Другая проблема - поисковик Яндекс упорно не хочет самостоятельно удалять сессии из урла, а, значит - индексирует дубли. Чтобы решить эту проблему, придется лезть в код. Ищем файл functions.php, в нем function append_sid(), которая формирует ссылки, добавляя в них ссессию (sid=32_символа). Находим строчки, начинающиеся с return $url . . В моей версии форума это были 1716 и 1746 строки (ищем 'sid=' . $session_id). В первом случае я изменил строку на:
return $url . (($append_url) ? $url_delim . $append_url . $amp_delim : ( (preg_match('!(Yandex/)!', $_SERVER['HTTP_USER_AGENT'])) ? '' : $url_delim . 'sid=' . $session_id )) . $anchor;
во втором на:
return $url . (($append_url) ? $url_delim . $append_url . $amp_delim : $url_delim) . $params . ((!$session_id) ? '' : ( (preg_match('!(Yandex/)!', $_SERVER['HTTP_USER_AGENT'])) ? $amp_delim . 'w=w' : $amp_delim . 'sid=' . $session_id )) . $anchor;
Приведенный выше код проверяет наличие в имени агента строки "Yandex/", если находит, то он не отдает поисковой машине сессию. Если поисковик уже скушал часть ссылок с сессиями, то придется мудрить более сложный код, чтобы вырезать из урла сессию и перенаправлять поисковую машину на адрес без сессии, не забыв отдать заголовок 301.
Для поисковой оптимизации стоит избавиться в заголовках страниц (тэг title) от неинформативных фраз типа: "Просмотр темы".
Также в шаблонах стоит от индексации закрыть некоторые ссылки (внутренние и внешние, в т.ч. если ссылки имеют переменные типа GET, но в файле роботс их закрыть проблематично). Для этого ссылку надо окружить тэгами <noindex></noindex> (будьте аккуратны! если вы не закроете тег noindex, это может привести к неправильному индексированию форума) и в сам тэг ссылки добавить аттрибут rel="nofollow").
См. также:
защита phpbb3 от спама (ботов).
Copyright © 2009 "Программирование на PHP для начинающих"