Здравствуйте, гости и подписчики блога 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», требующий больше ресурсов на стороне сервера.
Метки: apache, htaccess, директива, переадресация, редирект, сервер
Мне нужно сделать редирект,но увы,не поняла,как и где прописать необходимые директивы.Такой уж я чайник
Natalia, если бы знать, что и куда (на что) конкретно Вы хотите редиректить, то было бы больше шансов Вам помочь.
«mod_alias» и «mod_rewrite» — какова в разнице нагрузка на сервер этими модулями? Насколько первый экономит ресурсы сервера? Спасибо
Вит, «mod_rewrite» по сравнению с «mod_alias» просто монстр (в хорошем смысле этого слова), обладающий гораздо большей гибкостью и функциональностью.
Разницу в нагрузке на сервер этими модулями определенно сказать невозможно, так как все зависит от «железа», конфигурации, посещаемости сервера, а так же от количества и разнообразия используемых директив в .htaccess и httpd.conf.
Одно можно точно сказать, что при работе модуль «mod_rewrite» занимает гораздо больше памяти, больше нагрузки на процессор и больше времени выполнения, чем модуль «mod_alias».
Я встречала пока что только 301 (подавляющее бол-во) и 302 редиректы. Полезные штуки)
И, кстати, каким обычно смотришь тулом http заголовки?
Смотрю с помощью «Firebug» (плагин для браузеров) или «Fiddler Web Debugger» (самостоятельное приложение, очень его рекомендую: http://www.fiddler2.com/fiddler2/)
Firebug пользуюсь постоянно) А так смотрю с помощью internetofficer.com/seo-tool/redirect-check/ :)
Может кто подскажет, что лучше для нового сайта 301 редирект с дублирующей страницы или ее запрет в robots.txt
Можно к примеру временно поставить 301-й редирект и спустя какое-то время вообще удалить дублирующую страницу, и одновременно (или уже после) в вэб-мастерах (Google и Яндекс) дополнительно через соответствующую форму запретить индексирование страницы-дубликата.
А я так и не разобрался с такими тонкостями :(
у меня только 301 стоит. не знаю достаточно ли.
Если Вы всего лишь перенаправляете на другой домен, то в принципе достаточно.