Flash intro feat. .htaccess
Wednesday, September 19, 2007Тривиальная задача - поставить на сайт flash intro. Я знаю, что они всем надоели до чёртиков и ничего, кроме раздражения не вызывают, однако некоторым клиентам - нравится. Вообще они имеют право на существование, если сделаны без нездорового фанатизма (и интро и клиенты:)).
Итак - пусть индексная страница index.php. Как это обычно делают? В лучшем случае рисуют страницу intro.php и в .htaccess пишут DirectoryIndex intro.php, при этом все внутренние ссылки, указывающие на корень / приходится менять на /index.php. Худшие случаи я тут не рассматриваю.
Я придумал более интересное решение, использовав mod_rewrite. Наверняка я не первый, кто до такого додумался, но ведь идеи витают в воздухе, а написать преобразование быстрее, чем гуглить этот вопрос.
Идея, собственно, вот в чём - не трогаем код, не переименовываем файлы и не меняем DirectoryIndex.
Трогаем только .htaccess
RewriteCond %{HTTP_REFERER} !yourdomain.com
RewriteCond %{REQUEST_URI} !intro.php$
RewriteCond %{REQUEST_URI} ^[/]?$
RewriteRule ^(.*)$ /intro.php [R,L]
# остальные преобразования, если необходимы
Теперь - подробнее
Если HTTP_REFERER - не ваш домен
RewriteCond %{HTTP_REFERER} !yourdomain.com
Это условие нужно для того, чтобы редирект на intro не зациклило
RewriteCond %{REQUEST_URI} !intro.php$
Срабатывает только если запрошена индексная страница. Без этого правила пользователь, зашедший по внешней ссылке с поисковика, - будет отправлен на intro - нам это не нравится.
RewriteCond %{REQUEST_URI} ^[/]?$
Все условия соблюдены - стоп-машина, редирект.
RewriteRule ^(.*)$ /intro.php [R,L]
Это - работает!
А теперь вопрос на засыпку - насколько дружелюбно такое преобразование к поисковым ботам?


