Использование директив файла .htaccess — часть четвертая: редирект, переадресация

Здравствуйте, гости и подписчики блога 4remind.ru. В этой, четвертой части темы «Использование директив файла .htaccess», освещена базовая информация о том, как просто и правильно осуществлять редирект (переадресацию, перенаправление) посетителей сайта, включая и поисковые системы, ну нужные страницы и другие ресурсы.

Базовая переадресация (редирект)

Базовая, самая простая переадресация осуществляется с помощью директивы Redirect. Если вам понадобится перенаправить все запросы, ведущие на главную страницу сайта, на другую страницу или домен, то можно использовать следующую конструкцию:

Redirect 301 / http://vashsait.ru

Таким способом часто пользуются например для редиректа при переносе сайта с одного домена на другой.

В следующем примере все запросы к директории (каталогу) «mycodes» будут перенаправляться на другой каталог:

Redirect 301 /mycodes http://vashsait.ru/src/mycodes

Этот пример показывает, что при запросе страницы items2011.html клиент будет перенаправлен на страницу:

Redirect 301 /items2011.html http://vashsait.ru/items2012.html

Вместо кода «301» в параметрах можно указывать и символическое имя «permanent»:

Redirect permanent /mycodes http://vashsait.ru/src/mycodes

Но все же лучше в параметрах использовать именно код «301», так как именно он наиболее часто используется.

Директиве Redirect можно передавать в качестве кода (кода состояния) любой из диапазона 300-399. Однако в основном используется только четыре из них для того, чтобы сообщить клиенту о том, чем обусловлена или вызвана переадресация.

301 Постоянный редирект. Запрошенному ресурсу назначен новый адрес на постоянной основе. Браузеры и другие клиенты, использующие кэш, должны кэшировать и в будущем использовать именно новый адрес.
302 Времменный редирект. Ресурс перемещен временно. Браузеры и другие клиенты, использующие кэш, НЕ должны кэшировать новый адрес, и в будущем они должны использовать изначальный адрес.
303 Клиент может найти ответ по другому адресу. Причем запрос к альтернативному адресу должен использоваться методом GET. Данный ответ НЕ кэшируется, но сама переадресованная страница может кэшироваться на основании того, что она не является постоянной заменой изначальной страницы.
410 Запрошенная страница или ресурс удален, больше не существует или намеренно недоступен. В ответе с этим кодом переадресованный URL не указывается. Во избежание «недоразумений» на стороне клиента рекомендуется по возможности вместо этого кода использовать код 303.

Пример редиректа с кодом 410:

Redirect 410 /temp/olddoc.html

Для сайтов, которые посещают реальные люди, все же редирект 410 обрабатывать следующим образом:
- создать страницу с информацией о причине удаления страницы или ресурса;
- добавить в .htaccess обработку ошибки 410;

Redirect 410 /temp/olddoc.html
ErrorDocument 410 /error410.html

Таким образом посетитель будет видеть причину или обоснование отсутствия запрошенного им ресурса или страницы.

Регулярные выражения в переадресации

В более новых версиях вэб-сервера Apache в модуле «mod_alias» есть директива RedirectMatch, для которой в качестве параметра исходного URI используется регулярное выражение, что позволяет более гибко составлять редирект. Например, для того, чтобы переадресовать все запросы к файлам с расширениями .xls, .doc, .pdf на другой адрес или вообще другой сервер, можно сделать так:

RedirectMatch (.*)\.(xls|doc|pdf)$ http://docs.archives.org/$1.$2

Что-то подобное многие из вас уже наверно встречали в статье Счетчик скачиваний файлов на PHP с применением htaccess и MySQL, правда там использовалась директива «RewriteRule», о которой речь пойдет в следующей части об использовании директив файла .htaccess.

Заключение... Простота базовой переадресации (редиректа) заключается в том, что для нее используется модуль «mod_alias», который как правило подключен изначально в конфигурации сервера Apache и нет необходимости подключать дополнительный модуль «mod_rewrite», требующий больше ресурсов на стороне сервера.

Метки: , , , , , сервер
Другие статьи похожей тематики:

Поделитесь материалом с другими, воспользуйтесь этими кнопками:
Получать обновления и новые материалы блога по E-mail

12 комментариев к “Использование директив файла .htaccess — часть четвертая: редирект, переадресация”

  1. Natalia:

    Мне нужно сделать редирект,но увы,не поняла,как и где прописать необходимые директивы.Такой уж я чайник

    Ответить
    • Natalia, если бы знать, что и куда (на что) конкретно Вы хотите редиректить, то было бы больше шансов Вам помочь.

      Ответить
  2. Вит:

    «mod_alias» и «mod_rewrite» — какова в разнице нагрузка на сервер этими модулями? Насколько первый экономит ресурсы сервера? Спасибо

    Ответить
    • Вит, «mod_rewrite» по сравнению с «mod_alias» просто монстр (в хорошем смысле этого слова), обладающий гораздо большей гибкостью и функциональностью.
      Разницу в нагрузке на сервер этими модулями определенно сказать невозможно, так как все зависит от «железа», конфигурации, посещаемости сервера, а так же от количества и разнообразия используемых директив в .htaccess и httpd.conf.
      Одно можно точно сказать, что при работе модуль «mod_rewrite» занимает гораздо больше памяти, больше нагрузки на процессор и больше времени выполнения, чем модуль «mod_alias».

      Ответить
  3. Azarchick:

    Я встречала пока что только 301 (подавляющее бол-во) и 302 редиректы. Полезные штуки)
    И, кстати, каким обычно смотришь тулом http заголовки?

    Ответить
    • Смотрю с помощью «Firebug» (плагин для браузеров) или «Fiddler Web Debugger» (самостоятельное приложение, очень его рекомендую: http://www.fiddler2.com/fiddler2/)

      Ответить
      • Azarchick:

        Firebug пользуюсь постоянно) А так смотрю с помощью internetofficer.com/seo-tool/redirect-check/ :)

        Ответить
  4. artis72:

    Может кто подскажет, что лучше для нового сайта 301 редирект с дублирующей страницы или ее запрет в robots.txt

    Ответить
    • Можно к примеру временно поставить 301-й редирект и спустя какое-то время вообще удалить дублирующую страницу, и одновременно (или уже после) в вэб-мастерах (Google и Яндекс) дополнительно через соответствующую форму запретить индексирование страницы-дубликата.

      Ответить
  5. rza2008:

    А я так и не разобрался с такими тонкостями :(

    Ответить
  6. Андрей:

    у меня только 301 стоит. не знаю достаточно ли.

    Ответить
    • Если Вы всего лишь перенаправляете на другой домен, то в принципе достаточно.

      Ответить

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

Подписаться на обновления блога 4remind.ru по RSS
Новости блога в социальных сетях

="4remind.ru