редирект
-
Редирект на .htaccess (RewriteEngine)
Что такое .htaccess?
.htaccess- это специальный файл веб-сервера Apache, в котором записаны инструкции для управления поведением сервера в этой папке, и во всех вложенных (если в них отсутствуют свои .htaccess).Как использовать?
Для осуществления редиректа в .htaccess, можно использовать любую из трех директив Apache (Апач, httpd): Redirect, RedirectMatch, либо RewriteRule (при включенном RewriteEngine).Синтаксис:
Redirect [status] URL-path URL-to-redirect
Необязательный параметр status - это три цифры - код редиректа (например, 301). Если не указан, то по умолчанию подставляется 302.URL-path - часть запрашиваемого пользователем (или поисковиком) адреса, которая должна обязательно начинаться со слеша (/).URL-to-redirect - полный адрес сайта (и, возможно, часть пути), на который будет осуществляться редирект. Должен быть вида http://site.ru/ - то есть обязательно должен присутствовать протокол (http://) и закрывающий адрес сайта слеш (/).Если URL-path заканчивается не слешем, то редирект будет срабатывать только в случае точного совпадения запрошенного пользователем адреса и URL-path.Если URL-path заканчивается слешем, то редирект сработает не только для указанного адреса, но и для всех, которые начинаются на указанный. А к URL-to-redirect будет добавлена часть адреса, следующая за последним указанным слешем в URL-path.
RedirectMatch [status] URL-regexp URL-to-redirect
Действие директивы RedirectMatch аналогично Redirect, но в параметрах URL-regexp и URL-to-redirect можно использовать регулярные выражения.RewriteEngine on # должно быть включено (on) для работы RewriteRule
RewriteRule URL-regexp URL-to-redirect [L,R[=status]]У директивы RewriteRule более широкий спектр применения. Который, в числе прочих возможностей, разрешает ее использования и для редиректа - с указанием в конце строки в квадратных скобках [ ] флагов L (выполнить немедленно) и R (редирект).
Примеры:
Redirect / http://yandex.ru/yandsearch?text= # Выполнится 302 редирект (по умолчанию) на поиск в Яндексе символов, введенных в адресную строку после названия Вашего сайта.
# То есть если посетитель введет http://ваш_сайт.ru/page, то браузер его перенаправит на http://yandex.ru/yandsearch?text=pageRedirect 301 /hello.html http://google.ru/search?q=bye # В случае перехода на страницу http://ваш_сайт.ru/hello.html выполнится 301 редирект на поиск в Гугле фразы "bye".
RedirectMatch (.*)\.jpg$ http://хостинг_для_картинок$1.jpg # "Временно" (по умолчанию действует 302 редирект) переадресовываем все запросы jpeg-картинок на какой-либо бесплатный хостинг
# или то же самое, но с применением RewriteRule:
RewriteEngine on
RewriteRule (.*)\.jpg$ http://хостинг_для_картинок$1.jpg [L,R]источник: http://redirekt.info/article/redirekt-na-htaccess-rewriteengine.html
-
Редирект на html с задержкой
Это особый вид редиректа. Так как он располагается в заголовке html-документа, то страница, на которой он расположен, с одной стороны является полноценной страницей - на най может присутствовать текст, картинки и т.д. А с другой - это редирект, который срабатывает через несколько секунд (или сразу же, если указать задержку в 0 секунд).
Синтаксис:
<meta http-equiv="refresh" content="seconds;URL-to-redirect">
Первый параметр seconds - это количество секунд (после полной загрузки страницы), по истечении которых произойдет редирект на второй параметр URL-to-redirect.
Как использовать?
Данный редирект должен располагаться в секции <head> html-документа, таким образом:
<html>
< head>
< meta http-equiv="refresh" content="seconds;URL-to-redirect">
< /head>
< body>
текст страницы
</body>
< /html>
Примеры:
Делаем некую промежуточную страницу для формирования счета и уточнения деталей заказа. В этом примере, после полной загрузки страницы, клиент увидит текст, идущий после <body>, а по прошествии 5 секунд автоматически будет перенаправлен на https://merchant.webmoney.ru/:
<html>
< head>
< meta refresh="5;https://merchant.webmoney.ru/">
< head>
< body>
Ув. Иванов Иван Иванович!
Сейчас Вы перейдете на мерчант WebMoney для оплаты выбранного лота. Если этого не произошло автоматически, пожалуйста, нажмите <a href="https://merchant.webmoney.ru/">перейти</a>.
< /body>
< /html>
Делаем аналогичное перенаправление на мерчант WebMoney, но без пояснительно текста, как в предыдущем примере. Посетитель фактически не заметит что произошло перенаправление, так как мы установим для этого задержку в ноль секунд.
<html>
< head>
< meta refresh="0;https://merchant.webmoney.ru/">
< head>
< /html>- Но учтите, что указывать задержку в 0 сек. не рекомендуется по крайней мере по двум причинам:
- в случае, если пользователь захочет вернуться на предыдущую страницу, и нажмет соответствующую кнопку в браузере, ему это не удастся: он попадет на страницу с редиректом, и браузер опять перенаправит его вперед.
- поскольку это полноценная страница, и на ней может присутствовать текст, то поисковики могут увидеть в этом редиректе способ обмануть их: ведь рядовой пользователь этого текста не увидит (он будет немедленно перенаправлен на URL-to-redirect), в то время как для поисковиков текст доступен.
Но в то же время не забывайте, что возможность указать нулевую задержку все же есть.источник: http://redirekt.info/article/redirekt-na-html-s-zaderzhkojj-meta-refresh.html
- в случае, если пользователь захочет вернуться на предыдущую страницу, и нажмет соответствующую кнопку в браузере, ему это не удастся: он попадет на страницу с редиректом, и браузер опять перенаправит его вперед.
-
редирект на javascript (js)
Особенности использования редиректа на javascript
Редирект, написанный на яваскрипт (или же джаваскрипт - как кому больше нравится), хотя и не отдает 3xx редирект, но все же позволяет переадресовывать пользователей на нужную страницу.
Такой редирект часто используют для "обмана" поисковых систем: так как javascript обрабатывается только в браузере пользователя, но не обрабатывается поисковыми пауками. На сегодняшний день это утверждение справедливо для всех поисковиков, кроме гугла: Google успешно распознает многие редиректы, написанные с помощью яваскрипт.
Примеры:
В следующих примерах пользователь будет переадресован на Яндекс.
<script type="text/javascript">
location="http://yandex.ru";
document.location.href="http://yandex.ru";
location.replace("http://yandex.ru");
window.location.reload("http://yandex.ru");
document.location.replace("http://yandex.ru");
< /script>
Так же с помощью функции setTimeout возможно реализовать задержку переадресации перед выполнением редиректа (в приведенном ниже примере - 5 секунд):
<script>
setTimeout( 'location="http://yandex.ru";', 5000 );
< /script>
Используйте javascript-редирект с осторожностью, так как его часто используют дорвейщики для своих нужд. И поисковые машины с ними борются.источник: http://redirekt.info/article/pishem-redirekt-na-javascript-js.html
-
редирект на php (header)
Как сделать?
В php есть замечательная функция header, которая разрешает не только подменять стандартные заголовки, но и добавлять новые.Как использовать?
Для редиректа на php используется функция header - с добавлением заголовка Location либо Refresh.
Синтаксис:
void header ( string string [, bool replace = true [, int http_response_code]] );
Первый параметр string - полностью сформированная строка заголовка, который необходимо добавить (без завершающего перевода строки "\n")Второй параметр replace указывает, нужно ли заменять заголовки с одинаковыми именами (true), или же добавлять в конец (false).Параметр http_response_code указывает код http-ответа (300, 301, 302 и т.д.).
Примеры:
header( 'Location: http://yandex.ru/yandsearch?text=redirect', true, 301 ); // сделать переадресацию с помощью 301 редиректа на поиск в Яндексе слова redirect.
header( 'Location: http://google.ru/search?q=redirect' ); // с помощью 302 редиректа переадресовывать на поиск в гугле слова redirect (При использовании Location без указания кода редиректа, по умолчанию используется 302-й).
header( 'Location: /article/page.htm', true, 303 ); // с помощью 303 редиректа переадресовать на внутреннюю страницу сайта.
header( 'Location: /', true, 307 ); // перебросить на главную страницу сайта с использованием 307 редиректа.
header( 'Refresh: 5; url=http://rambler.ru/' ); // переадресовать на главную страницу Рамблера через 5 секунд после загрузки страницы.
header( 'Refresh: 0; url=/error404.html' ); // переадресовать на страницу ошибки немедленно (без задержки).
источник: http://redirekt.info/article/pishem-redirekt-na-php-header.html