В процессе наполнения и оптимизации сайта, весьма случайно, натолкнулись на очень серьезную, на мой взгляд, проблему, которая весьма скудно освещена в Интернете. Однако, возникнув по какой то ошибке, эта, на первый взгляд, незначительная проблема, привела к заметному падению позиций сайта в ранжировании Яндекса и, возможно, попадании под фильтр Гугла.
Все дело в том, что сервера на базе Apache (про другие варианты я не знаю) с включенным модулем SSI некорректно обрабатывают запросы к страницам сайта. Возможно, такая проблема возникает и в других случаях, так как большинство сайтов обрабатывают такие запросы неправильно.
Пример для пояснения проблемы.
Предположим, Вы хотите попасть на страницу page1.html на сайте
www.domen.com.
Набираете в строке браузера:
http://www.domen.com/page1.htmlВ результате, Вы, естественно, попадете на страницу искомого Вами сайта. Все нормально.
А теперь попробуйте набрать
http://www.domen.com/page1.html/ т.е. добавьте слэш в конце адреса
или допишите к адресу существующей страницы адрес не существующей на данном сайте страницы - page2.html или page3.html и любой другой текст
http://www.domen.com/page.html/page2.html,
http://www.domen.com/page.html/page3.html и т.п.
а также любые комбинации с основой в корне запроса
http://www.domen.com/page1.html/В ответ сервер должен был отдать ошибку 404 говорящую об отсутствии страницы на сервере.Если же обработка запроса производится неправильно, то в результате некорректной обработки строки запроса, сервер может выдать на все выше приведенные запросы, одну и ту же страницу
http://www.domen.com/page1.html.
Возможно, страница будет немного отличаться. Могут неправильно адресоваться ссылки с относительной адресацией, так как базовый каталог, для вариаций страниц, будет другой.
На первый взгляд, проблема не стоит выеденного яйца. Но, как я уже писал в начале, появление таких ссылок в базе поисковых машин, может привести к тому, что они будут посчитаны дублями основной страницы
http://www.domen.com/page1.html с соответствующими санкциями. Именно такая ситуация привела к обнаружению данной проблемы, когда страница сайта
http://www.gt-e.ru/pageRm_7.htmlполучила в поисковой системе 11 дублей, и результат не замедлил проявиться падением рейтинга в выдаче Яндекса.
Первым делом обратились к хостеру, спецы которого потыкались несколько дней и выдали заключение, что это не решаемая проблема Apache. Поиск по Интернету и проверка других сайтов дали неожиданный вывод о повсеместном распространении этой проблемы.
Так же было выяснено, что для серверов Apache, начиная с 2.0, вроде бы, эту проблему можно устранить настройками. Этот вариант не рассматривался, так как сервер нашего сайта на основе Apache 1.3.34 + nginx и менять хостинг пока нет смысла.
Впрочем, решение основной проблемы для нашего, небольшого по объему, сайта, нашли быстро.
В основе решения строка в .htaccess, позволяющая закрыть доступ к таким левым страницам.
Redirectmatch 404 ^(.*)\.html..*$
Более приемлемым решением было бы использование команд Rewrite, как посоветовали мне в известном форуме
http://forum.nginx.org/read.php?21,110577,110958Правда, синтаксис команд Rewrite совсем не тривиален и после некоторого потраченного времени было решено оставить пока Redirectmatch. Использование Redirectmatch не решает проблему полностью, особенно, для сложных сайтов, но позволило нам быстро закрыть проблему. Подать в панелях вебмастера Яндекса и Гугла на удаление неправильных ссылок и, через несколько выдач, позиции в Яндексе вернулись. Что касается Гугла, то есть опасения, что это стало причиной наложения какого то фильтра на страницу. В результате, последствия будут более длительными.
Хотелось бы обратить внимание на эту проблему. Возможно, кто знает более правильное решение, позволяющее сохранить нормальную адресацию без каких либо затычек.
Интересен механизм индексации таких страниц. Редко кто прописывает абсолютные ссылки на другие страницы своего сайта, а это значит, что если появится одна ссылка на ложную страницу, то по ссылкам с этой ложной страницы будут проиндексированы дубли других страниц сайта.