Продолжу в развитии темы о новом взгляде.
Сложилось устойчивое мнение о том, что файл
robots.txt необходим в тех случаях, когда следует запретить роботам индексацию страниц форума, ну, а то, что не запрещено, по умолчанию должно быть разрешено.
Это, конечно, справедливо, но для человека, которому достаточно общепринятых норм поведения в обществе. Робот же будет воспринимать отсутствие запрета в буквальном смысле – тащи с сайта всё что обнаружишь. Поэтому для работа необходимо вводить не только запреты, но и разрешения на индексацию определённых страниц.
Например, вы не возражаете, что бы сайт сканировался на разных языках и не запрещаете роботам индексацию страниц с переменной
langid
HTML Code:
/index.php?langid=1
То есть вам нужна эта страница в поиске и действительно, робот её проиндексирует, поскольку нет запрета для этого. НО вам-то нужна в индексе та же страница, но на других языках, мол, пусть робот и это исполнит. И как он должен исполнить, если ему всё разрешено, конечно же, как получится.
HTML Code:
/index.php?langid=1&langid=2
/index.php?langid=2
/index.php?langid=1&langid=2&langid=1& langid=2
/index.php?langid=1&langid=2&langid=1& langid=2&langid=2&langid=1& langid=2
……………………………..
И так далее.
В результате страницы с одинаковым содержимым робот проиндексирует по разным адресам. Для того что бы этого не произошло необходимо не по умолчанию разрешить роботу индексацию, а разрешить роботу индексацию в файле robots.txt. Сказано, сделано;
HTML Code:
Allow: /*.php?langid=1
Allow: /*.php?langid=2
Указанные строки в файле robots.txt означают, что роботам разрешено индексирование на двух языках всех файлов .php
На то, что все файлы индексируются, указывает звёздочка (
*). В тоже время, будут индексироваться страницы с адресами, которые робот пропишет справа от
langid=1 и
langid=2, потому что по умолчанию робот считает, что в конце адреса находится значок звёздочки. (
*). Исправить это можно поставив значок (
$) в конце строки с адресом – это будет означать для робота конец адресной строки
HTML Code:
Allow: /*.php?langid=1$
Allow: /*.php?langid=2$
Теперь робот будет сканировать только указанные выше адреса, отсекая адреса той же страницы справа. В тоже время, робот не будет сканировать с ПХП файлы у которых есть в адресе переменные, находящиеся между знаком вопроса (
?) и
langid. Что бы разрешит роботу сканирование переменных ПХП файлов воспользуемся значком звёздочки (
*).
Файл robots.txt будет выглядеть следующим образом;
HTML Code:
Allow: /*.php?*langid=1$
Allow: /*.php?*langid=2$
Но и этот код файла robots.txt нельзя назвать окончательным, потому что между знаком вопроса и переменной в конце адресной строки, langid, появятся нежелательные переменные, то есть, вот так может выглядеть адрес страницы;
HTML Code:
/index.php?langid=1&langid=2&langid=1& langid=2&langid=2&langid=1& langid=2$
В этом случае как раз и пригодится запрет роботу на сканирование. Запрещаем в файле robots.txt все комбинации
langid=1& langid=2&;
HTML Code:
Allow: /*.php?*langid=1$
Allow: /*.php?*langid=2$
Disallow: /*.php?*langid=2&langid=1
Disallow: /*.php?*langid=1&langid=1
Disallow: /*.php?*langid=2&langid=2
Disallow: /*.php?*langid=1&langid=2
Вот это содержимое файла robots.txt определит сканирование нужных вам страниц на двух языках.
В заключении вернусь в начало темы к переменной,
order, в строке файла robots.txt, которая была запрещена
HTML Code:
Disallow: /*.php?*order
Напомню, что этой строкой запрещалось сканирование всех адресов, содержащих указанную переменную. Однако, эта переменная появляется при просмотре страниц с темами в разделе. Иначе, робот не пойдёт дальше первой страницы раздела форума. Что бы открыть для индексирования все страницы раздела, необходимо разрешить индексирование переменной
order в файле forumdisplay.php
HTML Code:
Allow: /*.php?f*order
Disallow: /*.php?*order
То есть, из всего массива файлов с переменной
order роботам разрешено сканировать только страницы раздела форума.