Главная

Программирование на PHP для начинающих

Оптимизация форума phpbb3

Как и многие универсальные CMS, форум phpbb3 имеет лишние функции, лишний код, в нем стоит закрыть лишние ссылки (от индексации в поисковых системах).

Индексация форума phpbb3 (файл robots.txt и сессии)

Первое, что стоит сделать, это закрыть от индексации поисковиками страницы, на которые ведут внутренние ссылки, не несущие информации, или дублирующие ее.

Спамеры регистрируются на форумах ради того, чтобы разместить в профиле ссылку, в надежде, что профиль не закрыт от индексации. 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.

Редактирование шаблонов форума phpbb3 (HTML)

Для поисковой оптимизации стоит избавиться в заголовках страниц (тэг title) от неинформативных фраз типа: "Просмотр темы".

Также в шаблонах стоит от индексации закрыть некоторые ссылки (внутренние и внешние, в т.ч. если ссылки имеют переменные типа GET, но в файле роботс их закрыть проблематично). Для этого ссылку надо окружить тэгами <noindex></noindex> (будьте аккуратны! если вы не закроете тег noindex, это может привести к неправильному индексированию форума) и в сам тэг ссылки добавить аттрибут rel="nofollow").

См. также:
защита phpbb3 от спама (ботов).

Hosted by uCoz