редирект

  • Что такое .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=page
    Redirect 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-документа, то страница, на которой он расположен, с одной стороны является полноценной страницей - на най может присутствовать текст, картинки и т.д. А с другой - это редирект, который срабатывает через несколько секунд (или сразу же, если указать задержку в 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 сек. не рекомендуется по крайней мере по двум причинам:


    1. в случае, если пользователь захочет вернуться на предыдущую страницу, и нажмет соответствующую кнопку в браузере, ему это не удастся: он попадет на страницу с редиректом, и браузер опять перенаправит его вперед.

    2. поскольку это полноценная страница, и на ней может присутствовать текст, то поисковики могут увидеть в этом редиректе способ обмануть их: ведь рядовой пользователь этого текста не увидит (он будет немедленно перенаправлен на URL-to-redirect), в то время как для поисковиков текст доступен.



    Но в то же время не забывайте, что возможность указать нулевую задержку все же есть.

     

    источник: http://redirekt.info/article/redirekt-na-html-s-zaderzhkojj-meta-refresh.html

  • Особенности использования редиректа на 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 - с добавлением заголовка 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