Как сделать 301 редирект?
Содержание:
- Способ 2. htaccess-редирект
- Как сделать редирект?
- Склейка доменных имен и переезд на новый сайт
- Коды ответов HTTP
- Как устроен редирект?
- Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы
- Как сделать редирект с https на http?
- Немного магии
- Перенаправление по истечении некоторого времени
- Как сделать редирект
- Альтернативные методы переадресации
- Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы
- Что такое редирект?
- Генератор редиректов
- Перенаправление через mod_alias
- Что такое 301 редирект?
- How to Implement a Redirect
- Вывод кода JavaScript-редиректа с помощью функции PHP echo()
Способ 2. htaccess-редирект
Этот редирект делается простым помещением файла .htaccess в папку где нужно сделать редирект.
Например, редирект любого url (из папки где .htaccess) на нужный адрес, вот содержимое .htaccess:
RewriteEngine On RewriteRule (.*) //leonov-do.ru/ |
Возможны более сложные редиректы, но такой вариант по своей сути — такой же как и header-редирект (если указывается внешний URL). Возможны вариант переадресации файла — вместо (.*) указать к примеру имя go — будет редиректить адрес go и т.п. Можно указать в одном файле несколько строчек RewriteRule подряд с разными правилами — тогда не нужно писать каждый раз RewriteEngine On.
Как сделать редирект?
Делаем редирект на php
В php есть замечательная функция , которая разрешает не только подменять стандартные заголовки, но и добавлять новые.
Первый параметр string — полностью сформированная строка заголовка, который необходимо добавить (без завершающего перевода строки «\n»)
Второй параметр replace указывает, нужно ли заменять заголовки с одинаковыми именами (true), или же добавлять в конец (false).
Параметр http_response_code указывает код http-ответа (300, 301, 302 и т.д.).
Пример редиректа на php
Делаем редирект в .htaccess
Для осуществления редиректа в .htaccess, можно использовать любую из трех директив Apache (Апач, httpd): Redirect, RedirectMatch, либо RewriteRule (при включенном RewriteEngine).
Необязательный параметр status — это три цифры — код редиректа (например, 301). Если не указан, то по умолчанию подставляется 302.
URL-path — часть запрашиваемого пользователем (или поисковиком) адреса, которая должна обязательно начинаться со слеша (/).
URL-to-redirect — полный адрес сайта (и, возможно, часть пути), на который будет осуществляться редирект. Должен быть вида http: //site.ru/ — то есть обязательно должен присутствовать протокол (http://) и закрывающий адрес сайта слеш (/).
Если URL-path заканчивается не слешем, то редирект будет срабатывать только в случае точного совпадения запрошенного пользователем адреса и URL-path.
Если URL-path заканчивается слешем, то редирект сработает не только для указанного адреса, но и для всех, которые начинаются на указанный. А к URL-to-redirect будет добавлена часть адреса, следующая за последним указанным слешем в URL-path.
Пример
Делаем редирект на html
Это особый вид редиректа. Так как он располагается в заголовке html-документа, то страница, на которой он расположен, с одной стороны является полноценной страницей — на най может присутствовать текст, картинки и т.д. А с другой — это редирект, который срабатывает через несколько секунд (или сразу же, если указать задержку в 0 секунд).
Первый параметр seconds — это количество секунд (после полной загрузки страницы), по истечении которых произойдет редирект на второй параметр URL-to-redirect.
Пример
Редирект при помощи javascript
Редирект, написанный на яваскрипт (или же джаваскрипт — как кому больше нравится), хотя и не отдает 3xx редирект, но все же позволяет переадресовывать пользователей на нужную страницу.
Такой редирект часто используют для «обмана» поисковых систем: так как javascript обрабатывается только в браузере пользователя, но не обрабатывается поисковыми пауками. На сегодняшний день это утверждение справедливо для всех поисковиков, кроме гугла: Google успешно распознает многие редиректы, написанные с помощью яваскрипт.
- PHP
- Редиректы
- Примеры
Склейка доменных имен и переезд на новый сайт
Сценарии могут разворачиваться по-разному. Попробуем охватить как можно больше вариантов.
Переадресация на главную со страниц другого сайта. На сайте, с которого будет осуществляться переход, находим .htaccess и прописываем:
1-я строка – код – RеwrіtеСоnd %{RЕQUЕSТ_URI} (.*)
2-я строка – RеwrіtеRulе ^(.*)$ httр:// prіmеr-sаіtа.ru/
Здесь prіmеr-sаіtа.ru — это сайт, на который приводит переадресация.
Переадресация на главную страницу с второстепенных. Прописываем следующую комбинацию:
1-я строка – RеwrіtеЕngіnе Оn
2-я строка – RеwrіtеСоnd %{ЕNV:RЕDІRЕСТ_STАТUS} ^$
3-я строка – RеwrіtеRulе !(^$|.*\.(сss|jpg|gіf)) /
Переадресация на второстепенную страницу с главной. Прописываем комбинацию:
1-я строка – код – RеwrіtеЕngіnе Оn
2-я строка – RеwrіtеСоnd %{НТТР_НОSТ} ^www\. primer-saita\.ru$
3-я строка – RеwrіtеRulе ^$ httр://www. prіmеr-sаіtа.ru/vnutrеnyаyа-strаnіса/
Переадресация на основной домен с второстепенного (поддомена). Используем комбинацию:
1-я строка – команда – RеwrіtеСоnd %{НТТР_ТОSТ} ^теst.prіmеr-saita.ru$
2-я строка – RewriteRule ^(.*)$ http://primer-saita.ru%{REQUЕSТ_URI}
Переадресация на тождественные страницы стороннего сайта. Прописываем следующее:
1-я строка – RеwrіtеСоnd %{RЕQUЕSТ_URI} (.*)
2-я строка – RеwrіtеRulе ^(.*)$ httр:// рrіmеr-sаіtа.ru/$1
Изменение структуры адреса. Используем комбинацию:
1-я строка – код – RеwrieЕngіnе оn
2-я строка – RеwrіtеRulе ^cаtеgоrе/(+)/?$ $1
Когда не удается справиться с проблемой при помощи этого кода, можно обратиться к разработчикам сайта. Они учтут специфику CMS и внесут необходимые коррективы в синтаксис. В этом случае нужно также сформировать карту переадресаций.
Редирект для доменных имен на кириллице. Если у сайта домен в зоне .рф, действуют стандартные правила, но при этом кириллические символы нужно менять на соответствующие им коды:
1-я строка – RеwrіtеСоnd %{НТТР_НОSТ} ^xn-…\.xn—p1ai$
2-я строка – RеwrіtеRulе ^(.*)$ httр://www. prіmеr-sаіtа.ru/$1
Здесь .хn—p1аі — кодовое обозначение зоны .рф, а www.prіmеr-sаіta.ru — url устаревшей площадки.
Коды ответов HTTP
Каждый раз, когда Вы заходите на URL или отправляете запрос из браузера, используется протокол передачи гипертекста (HTTP). Это процесс, посредством которого мы запрашиваем данные, как CSS, HTML и изображения, хранящиеся на сервере. После того, как послан запрос, эти данные отвечают кодом HTTP 200 OK, означающий, что они доступны. Есть много различных видов кода ответа, самый известный – 404 Not Found; веб-страницы, а также любой другой запрашиваемый контент, например, изображения могут отвечают статусом 404.
Каждый HTTP ответ имеет определенный трехзначный номер, 404 Not Found – статусный код 4XX, указывающий ошибку клиента; 200 относится к категории 2XX и показывает, что сообщение успешно. Нас интересуют ответы HTTP-категории 3ХХ, как 301 Moved Permanently или 302 Found. Эти коды статуса специально отведены для переадресации.
В нашем случае используется перенаправление 301, потому что определенные веб-браузеры или прокси-серверы кэшируют этот тип перенаправлений и делают старую страницу недоступной.
Как устроен редирект?
Общий алгоритм редиректа выглядит следующим образом:
1. Пользователь в браузере открывает страницу. Например, site/abc.html
2. Сайт возвращает браузеру специальный заголовок, в котором указывает какую страницу необходимо открыть вместо запрошенной. Например, site/abc2.html
3. Браузер открывает страницу, адрес которой был указан в заголовке.
В реальности же, зависит от того, как реализован редирект:
1. С помощью htaccess. Многие существующие сайты используют Apache (серверная программа для сайтов). И файл htaccess позволяет настраивать в нем сложные правила переадресации страниц. Алгоритм аналогичен общему.
2. С помощью PHP (и иные серверные языки). Тот же самый специальный заголовок может сформировать серверный язык, такой как php. Алгоритм аналогичен общему.
3. С помощью мета тега HTTP-EQUIV=REFRESH. С некоторого времени, браузеры стали поддерживать специальный мета тег в html, который позволяет перенаправлять пользователей с одной страницы на другую. Пример:
<meta http-equiv="refresh" content="5; URL=site.ru">
где «5;» — это время в секундах, через которое необходимо осуществить редирект, а URL=site.ru — это адрес страницы.
Алгоритм следующий. Браузер загружает полноценную страницу по старому адресу (и отображает ее пользователю), видит данный заголовок и осуществляет перенаправление через указанное время.
Данный подход появился из-за того, что порой требуется отобразить некую информацию до переадресации. Например, поясняющий текст о том, что страницы разделов были перенесены.
4. C помощью JavaScript. Это не совсем переадресация в полноценном смысле. Дело в том, что перенаправление на другой url происходит после того, как страница будет полностью загружена (в этом смысле схоже с мета тегом), и после выполнения специальной команды, вида:
window.location.href = "";
Отличие в том, что данная команда может быть вызвана в произвольном месте и неожиданно для браузера. Именно поэтому этот метод сложно считать полноценным редиректом.
Стоит знать, что корректными для поисковых систем считаются htaccess, php и мета тег. JavaScript далеко не всегда может корректно восприниматься, поэтому его стоит использовать только для внутренних целей (например, в ЛК пользователей).
Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1/
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)$ http://%1/$1/
Как сделать редирект с https на http?
Решение 1
Делаем редирект на http с помощью .htaccess
Замечание Перечисленные ниже варианты предназначены для серверов Linux.
Пояснения для всех последующих вариантов Редактируем или создаём, если его нет, файл .htaccess в корневой папке вашего сайта, и добавляем сразу после один из нижеперечисленных вариантов, при этом не забыв изменить site.ru на URL вашего сайта.
Вариант 1
Вариант 2
Вариант 3
Вариант 4
Вариант 5
Вариант 6
Вариант 7
Вариант 8
Вариант 9
Вариант 10
Попробуем ещё вариант — вместо %{HTTPS} указать %{ENV:HTTPS}
Вариант 11
Вариант 12
Замечание Если не работает, то можно попробовать поместить, указанные выше строки, в выражение IfModule.
ВАЖНОПри открытии сайта, Сначала браузер проводит проверку наличия SSL-сертификата и уже затем срабатывает редирект. Другими словами, если на сайте нет SSL-сертификата, то посетители сначала увидят предупреждение браузера о незащищённом контенте, и уже затем сработает редирект на http …
ЗамечаниеОбычно, при открытии сайта, Сначала браузер, как правило, открывает версию https сайта. Но это не точно. На самом деле, это зависит от настроек сервера и сайта. Если вебсервер отдаёт заголовок «Strict-Transport-Security» ( смотрим в настройках add_header Strict-Transport-Security ), тогда браузер будет открывать сайт по HTTPS протоколу. Дополнительно, этот заголовок появляется, если в настройках web-домена установлено: «Повышенная безопасность SSL»
Если Решение 1 не работает?
В частности этим грешат серверы и VDS с панелью ISP Manager 5 ( на других панелях управления, например cPanel, с Lunix на этом же сайте переадресация работает! )
Решение 2
Открываем и внимательно смотрим ваш сайт (для примера site.ru )именно по протоколу httpS если он не ваш и отличаются и по внешнему виду и по контенту, то
нужно выяснить его ( URL ). Обычно это один из https сайтов, расположенный на вашем IP адресе. Найти список сайтов на вашем IP можно стандартным сервисом «Сайты на одном IP»
Итак, — хорошо — вы узнали, какой это сайт ( назовём его, для удобства https-sait.ru )
И теперь все дальнейшие правки, как ни странно, будем вести не на проблемном сайте, а на найденном (https-sait.ru)!
Идея: поставить передресацию с https на http на найденном https сайте https-sait.ru
13 Решение: создаем в корне этого сайта в файле htaccess правила типа условное выражение такого вида:
Пробуем, проверяем.
Подводим итог.
Другими словами, для того, чтобы сделать редирект с https на http вашего сайта sait.ru, вам потребуется найти и открыть https-sait.ru, отредактировать там .htaccess файл, прописав правила аналогичные пункту 13 для каждого вашего сайта: sait 1, 2, 3.ru
Вот такие странности панели ISP Manager ….
Решение 3
Замечание Предлагаемое решение работает на серверах с NginX.
Если у вас сервер с nginx, тогда делаем переадресацию в его настройках
Вариант 3.1
Указав, вместо ip — ваш реальный IP, вместо site.ru — URL вашего сайта и вместо # пути к сертификату — реальный путь. Сохраняем и перегружаем сервер
Модифицированный вариант:
Вариант 3.2
находим и удаляем там же строку
Если что то не работает, перезагружаем nginx и смотрим ошибки, которые находятся в
Замечание Если нужно, чтобы сайт открывался как по http, так и по протоколу https, то вышеуказанные варианты приведут к зацикливанию ….
Нужно же, чтобы сайт открывался как по http, так и по https. Если прописывать редирект в nginx на http
Вариант 3.2
Некоторые, устав бороться с NginX, сносят его и ставят классический редирект
Решение 4
Немного магии
- Тест на базовую модификацию URL как .
- Попробуйте с двойными косыми чертами .
- Попробуйте target.com/@attacker.com. В этом случае интерпретация будет такой: target.com — это имя пользователя, а attacker.com — это домен.
- Тест на интерпритацию javascript .
- Попробуйте target.com/?image_url=attacker.com/.jpg, если загружаются ресурсы изображений.
- Попробуйте IP-адрес вместо имени домена.
- Вы можете пойти дальше с точки зрения представления IP в десятичном, шестнадцатеричном или восьмеричном виде.
- Вы также можете попробовать target.com/?redirect_url=target.com.attacker.com, чтобы обойти слабые реализации регулярных выражений.
- Китайский разделитель 。в виде точки — .
- Тест на обратную строку unicode(“\u202e”) .
- Без слешей .
- Обратные слешы или .
- Разные домены в результате перенаправляется на который отличаются от .
- Попробуйте юникод безумие (включая смайлики) или (‘?’ это “\uD835\uDC00”).
Перенаправление по истечении некоторого времени
Чтобы отсрочить JS redirect page на несколько секунд, можно использовать JavaScript-функцию setTimeout следующим образом:
// перенаправление через 3 секунды (или 3000 мс) setTimeout(function() { window.location.href = "http://www.example.com"; }, 3000);
- Время в функции setTimeout определяется в миллисекундах (то есть 1000 мс = 1 секунда).
- Так как отображение веб-страницы браузером происходит последовательно сверху вниз, тэги script (которые не отмечены атрибутами defer или async) загружаются и выполняются до того, как отображается страница. Поэтому размещение кода в блоке <head></head> должно привести к немедленному выполнению кода и JS location redirect после указанного количества миллисекунд. Но можно разместить код в конце веб-страницы. Код будет выполнен, когда браузер достигнет этого места в веб-документе.
Данная публикация является переводом статьи «How To Redirect To Another Web Page Using JavaScript?» , подготовленная редакцией проекта.
Как сделать редирект
Ниже разберём несколько ситуаций, в которых владельцы сайтов чаще всего используют опцию редиректа.
C http на https
Из-за повсеместного переезда на https необходимость в этом редиректе возникает у многих. Для настройки через файл htaccess или PHP нужно использовать следующий код:
RewriteEngine On
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI)
C или на www
Этот редирект также очень важен для SEO, ведь с точки зрения поисковых систем страницы с префиксом www и без него являются разными и, соответственно, дублями.
Для выполнения настройки рекомендуется использовать специальные программы для генерации кодов редиректа, коих в Интернете существует множество, и сделать её через файл htacess.
Настройка перенаправления с одной страницы
Для выполнения этой операции действия нужно осуществлять по похожей схеме. Сначала сгенерировать код, после чего добавить его в файл htaccess или index.php. Если сайт работает на WordPress, можно воспользоваться плагинами, например, Simple 301 Redirects или Redirect.
Настройка редиректа при смене домена
В этом случае схема будет похожей, только в программах для генерации кода нужно получить постраничный редирект. Для этого потребуется ввести URL старого и нового сайта, а затем отметь нужные поля. Далее код также нужно добавить в файлhtacess или PHP.
Редирект папки
Можно задать и редирект для всей папки, то есть каталога. Это нужно, например, при создании подразделов, в том случае, если они отображаются в адресе страницы. Например, в раздел томаты на огородном сайте, имеющий ссылку примерного вида gardensampleblog.ru/tomaty/zheltye добавляется новый раздел «Томаты Черри», а ссылка получает следующий вид https://gardensampleblog.ru/cherry/zheltye.
Стандартный код для файла htacess в этом случае будет выглядеть следующим образом:
RedirectMatch 301 ^/tomaty/(.*)$ /cherry/$1
Альтернативные методы переадресации
- Редирект 302. Применяется в случае временной переадресации с одного url на другой. При его использовании поисковая система индексирует все доступные версии сайта или страницы. Объединения ссылочного веса и внутренних метрик на приоритетном ресурсе не происходит.
- 307 Temporary Redirect рекомендуется применять в исключительных случаях. Например, при техническом обслуживании сайта, когда он недоступен некоторое время.
- Обновления Meta Refresh выполняют переадресацию не на уровне сервера, а непосредственно на сайте. Пользователь сталкивается с временной задержкой (обычно около пяти секунд), после чего для перехода на нужную страницу должен принудительно запустить определенную команду. Этот метод часто приводит к падению посетительского интереса и проседанию поисковых индексов.
- Редирект rel=«canonical». Позволяет сохранить доступ посетителям ресурса к контенту дублирующихся страниц. При этом для поисковиков наличие команды canonical на одной из страниц говорит о том, что только она подлежит индексации в поиске.
В большинстве случаев постоянная переадресация является более правильным решением, чем временная. На практике это объясняется просто. Предположим, сайт сменил доменную зону, а затем еще и обзавелся защищенным протоколом https. При настройке временной переадресации в индексе Яндекса и Google по одним и тем же запросам появились три версии сайта с пропорциональным проседанием позиций в выдаче. После настройки редиректа 301 на приоритетный url произошло склеивание дублей, робот вернул сайт в топ выдачи.
Не рекомендуется использовать постоянный редирект при временном переносе сайта или наличии серьезных проблем со старым доменным именем. Если адрес забанен или попал под поисковую фильтрацию, смена дислокации с применением переадресации не поможет избавиться от этих ограничений.
Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы
RewriteCond %{REQUEST_URI} ^\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)\/$ http://%1/$1
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)\/$ http://%1/$1
Что такое редирект?
Это способ перенаправить посетителей веб-ресурса и поисковые системы на URL-адрес, отличный от того, который первоначально запрашивался. Самые используемые типы редиректов следующие.
301 Moved Permanently
301 редирект – это постоянная переадресация, которая передает приблизительно 90-99% веса ссылки. Такое перенаправление говорит, что страница была перенесена на новый адрес, а предыдущий URL-адрес должен считаться недействительным (устаревшим). Чаще всего используется для проставления редиректа с одной страницы на другую без потери веса ссылки.
302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)
302 редирект означает временное перенаправление. Такая переадресация практически не передает ссылочного веса, и в основном её не следует использовать. Сегодня сеть Интернет работает на основе нескольких протоколов. Один из них – HTTP протокол, с помощью которого определяется, как управлять URL-адресами. В двух вариантах данного стандарта код ответа сервера будет отличаться:
- HTTP 1.0: 302 с ответом сервера “Moved Temporarily” (Временно перемещен) – веб-документ временно перенесен на другой URL-адрес.
- HTTP 1.1: произошло изменение в ответе сервера на «Найдено» – веб-документ был найден.
307 Moved Temporarily (HTTP 1.1 Only)
307 редирект в протоколе HTTP 1.1 получил 302 перенаправление. Хотя основные поисковые роботы будут рассматривать его как альтернативу переадресации с кодом 302, но практически в любых ситуациях лучше применять 301 редирект. Исключить из правила можно только ситуации, когда контент перемещался на краткий период времени (к примеру, когда сайт закрывался на техническое обслуживание), а поисковики уже определили, что ваш сервер работает по протоколу HTTP 1.1. Трудно выяснить действительно ли поисковые роботы понимали, что ваш сервер имеет совместимость с этим стандартом. Поэтому для недолгосрочного перенесения контента проще пользоваться 302 редиректом.
Другие виды редиректов
В арсенале оптимизаторов есть и другие типы переадресаций: использование обновления мета-данных (Meta Refresh) или через JavaScript. Они запускаются на страницах, а не на сервере.
Но к таким переадресациям желательно прибегать лишь в крайних случаях, поскольку ними могут злоупотреблять спамеры, а также они могут использоваться на многочисленных дорвеях. Также стоит отметить, что при их использовании вес от ссылок передается в очень незначительном объеме, если это вообще происходит.
Генератор редиректов
В завершении нудного теоретического блока приведу генератор редиректа, который позволит без ошибок сгенерировать код для нужного вам типа редиректа. Хотя, для тех, кто внимательно читал, все и так предельно понятно)
На самом деле, инструментов на этот случай великое множество (в том числе – плагины для CMS). Так как все они делают они одно и то же, приведу только один пример: 301 Redirect Code Generator
301 Redirect Code Generator – онлайн генератор кода редиректа
Пожалуй, дополнительные комментарии тут излишни: просто вводите адрес страницы-донора (опционально), страницы-акцептора, выбираете подходящий тип редиректа, жмете кнопку “Generate Code” и будет вам счастье)
Перенаправление через mod_alias
Эти примеры показывают, как перенаправить из одного места в другое с помощью модуля псевдонимов Apache . Кроме того, вы можете изменить код состояния на любой другой (например, изменить с 301 на 302).
Перенаправить страницу в том же домене
Redirect 301 /page.php /page.html
1 | Redirect301page.phppage.html |
Перенаправить страницу на другой домен
Redirect 301 /page.php https://example.com/page.html
1 | Redirect301page.php https//example.com/page.html |
Перенаправить весь сайт
Redirect 301 / https://example.com/
1 | Redirect301https//example.com/ |
Перенаправить весь сайт в подкаталог
Redirect 301 / https://example.com/subdirectory/
1 | Redirect301https//example.com/subdirectory/ |
Перенаправление из подкаталога на другой сайт
Redirect 301 /subdirectory https://example.com/
1 | Redirect301subdirectory https//example.com/ |
Перенаправление с .html на .php
RedirectMatch 301 (.*)\.html https://example.com/$1.php
1 | RedirectMatch301(.*)\.html https//example.com/$1.php |
Запретить доступ к странице
Redirect 403 /page.html
1 | Redirect403page.html |
Сообщите посетителям, что страница исчезла
Redirect 410 /page.html
1 | Redirect410page.html |
Что такое 301 редирект?
301 редирект или 301 Permanent Redirect – это постоянная переадресация одного URL-адреса на другой. Само слово «редирект» дословно переводится с английского как «перенаправление».
Фактически это ответ сервера на запрос к нему, и ответ этот имеет код 301, говорящий о том, что адрес запроса был изменен навсегда. Результатом всех этих странных для новичка манипуляций становится то, что мы должны увидеть в браузере какой-то другой конечный адрес.
.htaccess
Если приложить максимум усилий — 301 редиректом возможно решить широкий круг проблем с оптимизацией, и глобально улучшить конверсию сайта. Соответственно, как сделать редирект на другой сайт нужно знать любому SEO специалисту и веб-мастеру.
Главное в этом деле — не забыться и не натворить лишнего, а также помнить о том, что перед каждым добавлением новых редиректов необходимо делать бекап файла .htaccess.
Зачем нужен 301 редирект и в каких случаях его используют?
301 редирект — весьма универсальный инструмент для любого оптимизатора. Он позволяет совершить перенос ссылочного наполнения одной страницы на другую. Чаще всего делают редирект на другой сайт при переезде на другой домен, соединении дублей интернет страниц или перенаправлении с «www» на «без www» и наоборот.
wwwбез wwwпо наследству
301 редирект способен передать:
- индекс цитирования;
- все ссылочное наполнение.
301 редирект не способен передать:
- возраст сайта;
- какие либо фильтры или санкции;
- присутствие в каталогах.
Ко всему прочему, возможен вариант, когда редирект выступает способом добавления в конце ссылки косой черты — слеша. То есть «http://site.com/news» при помощи редиректа изменяют на «http://site.com/news/».
Обобщая, 301 редирект необходим, как для пользователей, так и для поисковых роботов. Он позволяет и тем, и другим распознать, что появился новый сайт, домен или страница, а так же мгновенно переадресовывает их туда.
Кроме всего прочего 301 редирект достаточно часто используется в SEO, так как позволяет показать поисковым роботом, что страница переадресуется навсегда. Ну и, конечно, 301 редирект позволяет без труда перенести позиции старых страниц на новые.
Как настроить 301 редирект?
Решений этой задачи на самом деле множество, все зависит от того какими техническими характеристиками обладает хостинг вашего сайта. Сейчас мы приведем несколько наиболее простых вариантов, как сделать 301 редирект.
Запомните, что все операции производится в файле .htaccess или httpd.conf (для сервера Apache).
Вариант 301 редиректа для переадресации на другой домен:
Redirect 301 / http://www.site.com/index.htm
В данном примере все страницы сайта будут перенаправлены на другой.
301 редирект для одной страницы выглядит так:
Redirect 301 /site1/page1.htm http://www.site2.com/page2.htm
В качестве последнего примера приведем следующее:
Redirect permanent /test http://www.test.com/ Redirect permanent / http://enter.test.com/
Видно, что при попадании пользователя или поискового робота в директорию test он автоматически перенаправляется на «www.test.com», все остальные перейдут на «enter.test.com».
Можно, конечно, использовать готовый скрипт редиректа, которых полно в сети. Однако для успешности данной операции необходимо чтобы на хостинге были включены модули «mod_alias».
Как проверить работает ли 301 редирект?
Самые распространенные ошибки, при которых 301 редирект отказывается работать правильно – это наличие прочих редиректов, мешающих работе.
После того как вы настроили 301 редирект необходимо проверить его на работоспособность. Для этого нужно зайти не только на главную, но и прочие страницы сайта.
Переходя к практике, давайте рассмотрим как проверить 301 редирект.
Допустим, посетитель вводит в адресной строке браузера ссылку «http://primer.com/index.php» и нажимает «ввод». Браузер совершает HTTP-запрос и посылает его серверу, который возвращает HTTP-ответ.
При установленном редиректе, в поле «Location» будет прописан другой адрес страницы, например: «http://primer.com/surprize.php», куда и произойдет переадресация.
Существует много сервисов и плагинов позволяющих проверить работоспособность редиректа.
HttpFox
Плагин HttpFox для браузера Mozilla Firefox построчно фиксирует загрузку страницы, что позволяет отслеживать связки редиректов, а так же порядок и быстроту загрузки интернет страницы.
Надеемся, что данная статья помогла вам сделать редирект на новые страницы сайта без каких-либо проблем.
Удачи Вам!
How to Implement a Redirect
Today, most modern CMS platforms offer solutions and/or plugins to easily handle 301 and 302 redirects. For example, RankMath is a free WordPress plugin that offers redirection as a basic feature. Many hosting and CDN platforms also offer easy redirection management from their admin panels.
301 Redirects in .htaccess
A common way of implementing redirects is through an .htaccess file, which runs on Apache servers. Below we’ve listed some common .htaccess directives for redirection.
1. To redirect an entire domain to a new site:
Redirect 301 / http://www.example.com/
Replace the example domain with your new redirect destination. This will 301 redirect every page on your site to the corresponding URL on the target domain.
2. To redirect a single page
Redirect 301 /oldpage/ http://www.example.com/newpage/
You can use this redirect across different domains, or on your own site.
3. Using Apache mod_rewrite
You can also use Apache mod_rewrite in your .htaccess file for more flexible redirection. For example, here’s the code you’d use to redirect from a non-www to a www subdomain.
RewriteEngine on RewriteBase / rewritecond %{http_host} ^domain.com rewriterule ^(.*)$ http://www.domain.com/$1
For more .htaccess scenarios, the folks at Linchpin SEO have put together a good resource.
PHP Redirect
Here is an example of implementing a 301 redirect using PHP:
<?php header("Location: https://www.example.com/", true, 301); exit(); ?>
JavaScript Redirects
While you can technically implement redirects using JavaScript, it is not a recommended method for SEO purposes. While testing has shown that Google may interpret JavaScript redirects as 301s, it’s not a given. Because JavaScript is executed client-side, not server-side, there’s no guarantee of Google indexing the redirection properly. And finally, there’s no way to declare an HTTP status code when using JavaScript for redirection.
While not recommended, the following is an example of how you could implement a redirect in JavaScript:
<script type="text/javascript"> function redirect1(){ window.location = "http://www.example.com/new-url/" } setTimeout('redirect1()', 5000); </script>
Вывод кода JavaScript-редиректа с помощью функции PHP echo()
Это не является чистым PHP-решением. Тем не менее, оно также эффективно. Вы можете использовать функцию PHP echo() для вывода кода JavaScript, который будет обрабатывать редирект.
Если воспользуетесь этим решением, то не придется использовать буферизацию вывода. Что также предотвращает возникновение ошибок, связанных с отправкой заголовков.
Ниже приводится несколько примеров, в которых использованы разные методы JavaScript для редиректа с текущей страницы на другую:
<?php echo "<script>self.location='https://example.com/final.php';</script>"; echo "<script>document.location.href='https://example.com/final.php';</script>"; echo "<script>window.location.href='https://example.com/final.php';</script>"; echo "<script>window.location.replace('https://example.com/final.php');</script>"; ?>
Единственным недостатком этого метода перенаправления на другой сайт PHP является то, что JavaScript работает на стороне клиента. А у ваших посетителей может быть отключен JavaScript.