|
|
Модуль mod_rewrite.so в первую очередь предназначен для имитации файлов и папок на серверах типа Apache. Т.е. папки или файлы не обязательно должны существовать на сервере, их может заменять один или несколько серверных исполняемых скриптов с расширениями .php, .asp или любые другие исполняемые на стороне сервера программы.
Многие сайты, которые поисковые роботы и некоторые люди считают статическими (действительно состоящими из файлов и папок), на самом деле являются динамическими (их содержание генерируется в зависимости от того, какой URL был передан скрипту). Людей ввести в заблуждение куда проще, чем поисковых роботов, т.к. они помимо url смотрят еще и на все заголовки, возвращаемые сервером в ответ на запрос кокой либо страницы или файла, и в зависимости от этого решают к какому типу относится сайт и как его индексировать.
Так как же динамические сайты "обманывают" поисковиков, и главное, зачем им это нужно? Ответ на этот вопрос прост, они отсылают им такие заголовки (header), что бы поисковики поверили в то, что это действительно физически существующие файлы. Ну а нужно это многим сайтам, и в первую очередь для экономии трафика. Ведь если сайт является популярным и при этом очень большим (больше 100 Mb чистого контента), то поисковые системы могут индексировать его почти каждый день, что с точки зрения расчетов 100Мб x 30дней ≈ 3 Гигабайта, и это при условии что сайт индексирует всего один поисковый робот. А при симуляции реальных файлов, и отправке правильных заголовков поисковики не будут "скачивать" все уже проиндексированные страницы, при условии, что их размер и дата не будут меняться с течением времени.
Для работы с mod_rewrite вам необходимо в корневой папке сайта создать (если нет) или дописать в уже существующий .htaccess, строку:
RewriteEngine on
После этого, если mod_rewrite был установлен на вашем сервере, он должен начать работать. О том, как использовать все возможности mod_rewrite и вообще, что это такое, вы можете почитать в других моих статьях: Псевдостатика (mod_rewrite). Часть 1, Часть 2.
После то как mod_rewrite был настроен и сайт был приспособлен для работы с ним, т.е. все динамические URL были преобразованы в статические, можно приступать к исправлению отсылаемых заголовков. Основная масса поисковых роботов при индексации запрашивает только дату последней модификации и размер документа, но есть и более привередливые, и чтобы удовлетворить всех мне пришлось изрядно повозиться с их документацией. И вот небольшая таблица, в которой описаны основные заголовки, которые запрашивают поисковики для определения типа страницы:
Название заголовка |
Расшифровка |
If-Modified-Since |
Заголовок, который отправляет скрипту поисковый робот, в нем содержится дата (в формате GMT) последнего изменения файла, хранящегося у поискового робота. В ответ на него нужно отсылать header("HTTP/1.1 304 Not Modified"), если дата изменения этого файла не была изменена. |
Content-Length |
Размер файла, этот заголовок должен отправлять скрипт, причем он должен соответствовать реальности и всегда быть одинаковым. |
Last-Modified |
Дата (в формате GMT) текущего изменения, должна равняться той дате, что указанна в If-Modified-Since, если вы не хотите, что бы страница была еще раз скачана роботом. |
Expires |
Дата (в формате GMT) действительности файла/документа, по идее после истечения этой даты поисковики должны перестать выдавать данный файл/документ в результатах поиска. |
Content-Type |
Содержание (тип) файла, необходим поисковику для принятия решения, скачивать файл или нет. К примеру, если файл имеет расширение .exe или .dll то его содержание, наверное, никому не понадобится, по этой причине некоторые файлы даже не скачиваются поисковыми роботами. |
http_range |
Нужен для поддержки докачки файлов. Данный заголовок отправляется поисковым роботом и содержит размер уже загруженных данных (используется поисковиками крайне редко). |
accept-ranges |
Размер всего файла при использовании докачки данных (используется поисковиками крайне редко). |
content-range |
Позиция, с которой идет загрузка файла данных (используется поисковиками крайне редко). |
В таблицу я не стал вносить заголовки состояний страницы (200, 303, 302, 301, 404), которые ваш сервер в любом случае должен отсылать сам, но если вам хочется, то вы их тоже можете изменять. Более подробную информацию ищите в статье ПРОТОКОЛ ПЕРЕДАЧИ ГИПЕРТЕКСТА -- HTTP / 1.1 и Коды ответов сервера.
Из этой статьи вы должны были усвоить, что для больших и посещаемых сайтов использование mod_rewrite + header() жизненно необходимо. Даже если вам придется полностью менять движок сайта или его переделывать (для правильного отображения всех URL), то это экономически обоснованно, т.к. тратить свой трафик на поисковых роботов не целеобразно. Потому что приблизительная цена гигабайта трафика составляет 1-2$, и из расчетов выше видно, что на одного поискового робота будет приходиться по 3-6$ в месяц, а таких ботов обычно не менее пяти, в итоге получится очень значительная сумма даже для очень богатого и крупного интернет-проекта. Поэтому большие динамические сайты лучше сразу создавать изначально ориентированными на работу с mod_rewrite + правильный header(), и тогда индексация сайта множеством поисковиков для вас не будет проблемой.
Об отправке заголовков советую почитать статью Harry Fuecks (Перевод: Муллин Сергей, Кузьма Феськов) "Кэширование в PHP".