Как индексировать динамический контент

Источник: be1

Обычно под динамическим контентом понимается содержание, выдаваемое скриптом из базы данных. При этом url страницы будет выглядеть как http://www.сервер.ru/cgi-bin/data.pl?id=122&name=vasya. Проблема возникает в том, что значительная часть поисковых роботов отказывается индексировать страницы, в адресе которых встречается знак вопроса или cgi-bin. Некоторые поисковые машины с подозрением относятся к наличию в url .pl или .cgi.

Избавиться от этой проблемы можно несколькими способами.

Передача параметров в URL и переменную PATH_INFO.

Первый способ. Самый простой.

Делается небольшая "обманка" - если раньше Вы принимали параметры, вытаскивая их из QUERY_STRING, то теперь Вы будете их вытаскивать из PATH_INFO, простой передачей параметров по слешу и url будет выглядеть как data.pl/a=20 . Можно пойти немного дальше. Если Вам нужно передать только один параметр и он единственный, то можно сделать хитрее - cgi-bin/data.pl/20. Еше лучше будет сделать data.html/20, т.е. убрать из url cgi-bin. В последнем случае передавать скрипту параметры можно используя SSI директиву <!--#include virtual="/cgi-bin/data.pl?$PATH_INFO" --> . Далее взять QUERY_STRING, обрезать первый символ (всегда слеш) и разбирать обычным способом.

Прегенерация статических страниц

Второй способ. Хитрый.

Вы делаете (генерите скриптом или вручную) SSI станицу, именуемую значением или уникалным псевдонимом (например vasya.html), внутри которой стоит простая директива <!--#include virtual="/cgi-bin/data.pl?name=vasya" --> . Таким образом Вы управляете контентом этой страницы из базы данных, но поисковики (так же как и пользователи) видят эту страницу по удобному им URL.

При передаче нескольких параметров этот способ можно применять, закладывая параметры или в имя директории или в имя файла.

mod_rewrite

Третий способ. Самый хитрый.

Предлагаемый способ создания псевдостатических страниц - использование модуля mod_rewrite, если у Вас сервер Apache и провайдер позволяет Вам управлять им. Суть метода заключается в использовании возможности указать любой URL на сервере, далее перехватить запрос скриптом и выдать контент, т.е. при реальном отсутствии на сервере документов (вся информация хранится и выдается из базы данных) на сайте все URL видны как статические, т.е. без "?", "cgi-bin", ".php?id=" и прочих.

Включить сам модуль можно через httpd.conf или .htaccess

RewriteEngine on
Options +FollowSymlinks

Следующая неообходимая запись
RewriteBase /
говорит модулю где применяется модуль, указание "/" эквивалентно "везде внутри сервера"

Завершающие строчки настройки модуля - указание что при каких условиях делать, например:

RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon
RewriteRule ^.*$ - [F]

В данном случае запрещается пользователю с браузером EmailSiphon входить на сайт.

А запись типа
RewriteRule ^(.*)shop/(.*)$ $1cgi-bin/shop.cgi?id=$2
говорит серверу, о том, что при запросе вида www.domen.ru/AAAAAAshop/1234 должен быть выдан контент с URL www.domen.ru/AAAAAA/cgi-bin/shop.cgi?id=1234

Рекомендуем Вам внимательно и аккуратно пользоваться этим способом, т.к. при его использовании может сильно возрастать нагрузка той машины, на которой хостится Ваш сервер. Детальное описание модуля есть на сайте производителя - http://www.apache.org/docs/mod/mod_rewrite.html.

Важное примечание.

Обратите внимание на обязательную проверку передаваемых параметров дабы исключить возможность взлома Вашего сервера через скрипты. Также обратите Ваше внимание на работу скриптов при отсутствии передачи им параметров - они не должны выдавать ошибку.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=2489