среда, 14 октября 2009 г.

Наглядное руководство по htaccess и mod_rewrite для новичков

Автор: Патрик Элтофт
Перевод: Всеволод Козлов
Несмотря на то, что статей и руководств, освещающих .htaccess и mod_rewrite, в Сети, мягко говоря, немало, многие веб-мастера до сих пор испытывают нехватку знаний по этому вопросу. Многим из них просто непонятно то, что говорится в этих мануалах, т.к. там это все сложно для их понимания.
Я хорошенько подумал, как бы решить эту проблему, и решил, что сделаю руководство, состоящее из наглядных примеров решения основных проблем, связанных с .htaccess и mod_rewrite.
Не будем терять времени, приступаем!

Сперва давайте разберемся, что же такое файл .htaccess и mod_rewrite.
.htaccess – файл-конфигуратор Apache-серверов.
Mod_rewrite – модуль, используемый веб-серверами для преобразования URL’ов.
.htaccess представляет собой обычный текстовый документ, расширение которого htaccess. Данный файл обычно находится в корне сайта, однако Вы можете создавать и дополнительные .htaccess-файлы для различных директорий Вашего сайта.

Удаление дублей страниц

Простейший и в то же время чаще всего необходимый трюк – редирект дублей одной и той же страницы на основной ее адрес.
Яркий пример – главная страница любого сайта обычно доступна по 4-ем адресам:
  • http://www.site.ru/
  • http://site.ru/
  • http://www.site.ru/index.html
  • http://site.ru/index.html
Каждый из перечисленных выше вариантов распознается поисковыми системами как самостоятельная страница, отсюда идет дублирование контента одной и той же страницы по нескольким адресам, что не есть хорошо.
Решение этой проблемы предельно простое и выглядит так:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.site.ru/ [R=301,L]

Таким образом, мы получим редирект всех страниц-дублей на http://www.site.ru/

Меняем расширение html на php

Иногда бывает так, что у Вас статичный веб-сайт, а Вам необходимо, чтобы на нем срабатывал какой-нибудь php-скрипт. Для этого Вам необходимо сказать серверу, чтобы он обрабатывал эту страницу как php-файл.
AddHandler application/x-httpd-php .html
Этот прием можно использовать и для других расширений файлов:
AddHandler application/x-httpd-php .xml
AddHandler application/x-httpd-php .asp

Задаем собственные страницы ошибок

Комментариев нет:

Отправить комментарий