Методы перенаправления и переписывания URL

Редиректы можно делать множеством способов. На web-сервере Apache (обычно это компьютеры под управлением операционных систем UNIX или Linux) можно очень просто реализовать редирект – в стандартном файле под названием. htaccess при помощи директив Redirect и RedirectMatch (подробнее о формате этого файла читайте по адресу http://httpd.apache.org/docs/2.2/howto/htaccess.html). Можно использовать также и более сложные директивы (известные как".правила перезаписи") при помощи модуля сервера Apache под названием mod_rewrite (который мы скоро обсудим).

На web-серверах Microsoft IIS (http://www.iis.net/) для реализации редиректов имеются разные методы. Основной метод выполнения редиректов – при помощи консоли IIS (подробнее об этом можно прочитать по адресу http://www.mcanerin.com/EN/articles/301-redirect-HS.asp). Можно также использовать текстовый файл с директивами (при условии применения дополнительного модуля ISAPI, такого как ISAPI Rewrite (http://www.isapirewrite.com/). Этот язык скриптов предлагает такие возможности, которые аналогичны модулю mod rewrite сервера Apache.

Многие программисты используют для реализации редиректов и другие способы. Это можно сделать непосредственно в языках программирования (таких, как Perl, PHP, ASP и JavaScript). Если программист реализует редиректы таким путем, то он должен убедиться, что web-сервер возвращает код состояния 301. Вы можете проверить заголовок, который возвращается дополнительным модулем Live HTTP Headers (http://livehttpheaders.mozdev.org/) браузера Firefox.

Еще один способ реализации редиректа – это выполнить его на уровне страницы при помощи метатега refresh, который выглядит примерно так:

<meta http-equiv="refresh" content="5;url=http://www.yourdomain.com/newlocation.htm" />

Первый параметр в разделе контента (число 5) указывает количество секунд, которое web-сервер должен подождать перед перенаправлением пользователя на указанную страницу. Это применяется в тех сценариях, когда издатель хочет показать страницу, позволяющую пользователю понять, что он будет перенаправлен на другую страницу (а не на ту, которую запросил).

Проблема состоит в том, что большая часть таких метаобновлений обрабатывается как 302-й редирект. Единственное исключение из этого правила, если вы указываете задержку редиректа в 0 секунд. Вам придется отказаться от показа вашей предупредительной страницы, говорящей пользователю о том, что вы переносите его, но поисковые движки будут обрабатывать это как 301-й редирект (для надежности лучше все же по возможности просто использовать 301-й редирект).