Как сделать редирект. Все виды.

Быстрые ссылки:
При помощи htaccess При помощи PHP При помощи HTML При помощи JavaScript
301 редирект с WWW на без WWW Редирект 404 ошибки
Редирект с HTTP на HTTPS
Типы редиректов

Есть несколько типов редиректов, рассмотрите каждый из них в кратце, чтобы определить какой из них вам больше подходит.

Редирект через htaccess - самый популярный, и довольно простой способ. Чтобы его сделать, вам понадобится создать в папке сайта файл с названием .htaccess (обратите внимание, что название файла начинается с точки, это не опечатка). Если вы используете CMS WordPress или Joomla, то скорее всего этот файл у вас уже есть, в этом случае вам нужно будет просто отредактировать его.
Читайте ниже чтобы узнать какие именно инструкции в нем нужно прописать, чтобы создать перенаправление.

Редирект при помощи PHP - подойдет в том случае, если вы разбираетесь в PHP и знаете структуру своего сайта. Этот вариант подойдет вам, если ваш сайт написан не на CMS. В ином случае лучше используйте редирект через htaccess.

Редирект HTML - если у вас простой HTML сайт и вам нужно сделать перенаправление для одной страницы - это самый простой вариант. Сделать перенаправление для всего сайта этим способом будет трудозатратно, особенно если у вас на сайте больше 10 страниц.

Редирект при помощи JavaScript - этот способ подойдет также в том случае, если у вас простой сайт, либо если нужно сделать редирект для одной - двух страниц, либо для всего сайта в целом.

Редирект при помощи .htaccess файла

Инструкции, которые вы увидите ниже, нужно прописать в файл .htaccess в самое начало.

  1. Редирект всего сайта (всех страниц) на другой сайт
    Redirect / http://new-site.ru/
    В этом примере, перенаправление будет происходить на сайт new-site.ru
  2. Редирект одной страницы на другую
    Redirect /page-1.html /page-2.html
    В этом примере, перенаправление будет происходить со страницы page-1.html на страницу page-2.html. Обе страницы должны располагаться на одном домене.
    Этот вариант подходит для замены старых страниц сайта на новые.
  3. 310 редирект с www на без www
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.example\.ru [NC]
    RewriteRule ^(.*)$ http://example.ru/$1 [R=301,L]
    В этом примере, посетители будут перенаправляться с http://www.example.ru на http://example.ru.
  4. 310 редирект с одной страницы на другую
    Redirect 301 /blog/page-1.html http://example.com/page-2.htm
    В этом примере, посетители будут перенаправляться со страницы blog/page-1.html на example.com/page-2.htm.
  5. Редирект ошибки 404
    ErrorDocument 404 /index.html
    Пропишите эту строку в .htaccess файле, и тогда все посетители, которым встретится ошибка 404, будут перенаправлены на index.html.
  6. Редирект с HTTP на HTTPS
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    Пропишите эту строку в .htaccess файле, и тогда все посетители вошедшие на сайт по протоколу HTTP будут перенаправляться на защищенный протокол HTTPS.

    Если вы прописываете редирект для WordPress, то обратите внимание на то, что в файле уже есть строка RewriteEngine On. Поэтому сразу под ней вам нужно добавить такие строки
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L]

PHP редирект

В PHP редирект делается так: сервер отправляет заголовки headers браузеру посетителя, и тот переходит по нужному адресу автоматически.
Стоит отметить важный момент, отправлять заголовки можно только до вывода другой информации. То есть они должны отправляться до вывода любой другой информации через echo и до отправки кук.

  1. Редирект на другой сайт
    <? header(" Location: http://example.com "); ?>
    В этом примере, перенаправление будет происходить на сайт http://example.com
  2. Редирект на страницу другого сайта
    <? header(" Location: http://example.com/page.html "); ?>
    Здесь перенаправление будет происходить на http://example.com/page.html
  3. Редирект определенной страницы на страницу другого сайта
    <?
    if( $_SERVER['REQUEST_URI'] === 'blog/post-1.html' ){
    header(" Location: http://example.com/page.html ");
    }
    ?>
    Здесь если посетитель сайта зайдет на страницу blog/post-1.html то он будет перенаправлен на http://example.com/page.html

HTML редирект

Чтобы сделать редирект через HTML, нужно добавить на каждую страницу где он планируется специальный мета тег. Мета тег прописывается внутри тега <head>.
На больших сайтах этот метод не удобен, и рекомендуется использовать редирект через htaccess.

  1. Редирект на другой сайт
    <meta http-equiv="refresh" content="5;http://yutex.ru">
    В этом примере, перенаправление будет происходить на сайт http://yutex.ru с задержкой в 5 секунд. Если установить значение задержки вместо 5 в 0, то посетитель будет перенаправляться на другой сайт моментально.
  2. Редирект на страницу другого сайта
    <meta http-equiv="refresh" content="0;http://yutex.ru/index.html">
    Здесь перенаправление будет происходить на http://yutex.ru/index.html и без задержек.

JavaScript редирект

Этот вид перенаправления удобен тем, что его код можно прописать в одном файле (в отличие от html метода), и этот файл вставить на каждой странице прописав
<script type="text/javascript" src="redirect.js"></script>

  1. Редирект на другой сайт
    <script type="text/javascript">
    location="http://yandex.ru";
    </script>
    Перенаправление сработает на сайт yandex.ru.
  2. Редирект на другой сайт с задержкой
    <script type="text/javascript">
    setTimeout(function(){
    location="http://yandex.ru";
    }, 5000);
    </script>
    Этот код делает то же самое что и предыдущий, но с задержкой в 5 секунд.
  3. Вариант для jQuery
    <script type="text/javascript">
    $(location).attr('href',"http://example.com");
    </script>
    Замените example.com на свой домен, на который нужно перенаправить посетителя.

Yutex — Хостинг, на котором все просто работает.
Yutex — Хостинг, на котором все просто работает.