Сайт о телевидении

Сайт о телевидении

» » Два мужчины ucp php redirect. Как в PHP задать редирект на другой URL до загрузки страницы

Два мужчины ucp php redirect. Как в PHP задать редирект на другой URL до загрузки страницы

Что такое 301 редирект?

301 редирект или 301 redirect (от англ. перенаправление) — это принудительная переадресация пользователя с одного URL на другой. Причем оба адреса могут принадлежать как одному, так и разным доменным именам .

Проще говоря. Пользователь вводит в адресной строке браузера (или переходит по ссылке) один URL адрес, но автоматически попадает на другой.

Что происходит в данный момент?

Происходит переадресация при помощи 301 редиректа. Действует это следующим образом.

Человек вводит в адресной строке URL адрес (или нажимает на гиперссылку);

Сервер получает запрос с URL адресом и начинает его обрабатывать;

В процессе обработки запроса «сталкивается» с инструкцией redirect и следует ее указаниям;

Отправляет пользователю новый URL адрес, который указан в инструкции и ответ 301.

Стоит сказать, что 301 редирект справедлив не только для людей, но и для роботов. То есть, краулер поисковой системы также будет перенаправлен на другой URL при наличии переадресации. Но об этом поговорим .

Для чего нужен 301 редирект?

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

    Адрес страницы навсегда изменился, поэтому нужно перенаправить пользователей на актуальный URL;

    Поменялся домен сайта, поэтому нужно переадресовать людей на новый домен;

    Один и тот же материал имеет несколько URL адресов, то есть, дублей;

    При работе online сервисов, форм, модулей и прочих интерактивных элементов сайта необходимо перенаправление.

Конечно, это неполный список того, как можно использовать 301 redirect, однако это основное.

Нужно понимать, что сделать 301 redirect со страницы возможно только при наличии доступа к этой самой странице. То есть, взять и прописать переадресацию для любого ресурса не получится. Именно поэтому, 301 редирект считается «официальным» перенаправлением, которое сделал владелец сайта.

Как сделать 301 редирект?

Создание 301 редиректа довольно простая задача. Тут нет запутанных алгоритмов и сложных структур. Необходимо лишь выучить синтаксис и понять несколько принципов работы.

Ниже мы опишем ряд основных способов создания 301 redirect, которые отличаются по своему исполнению, но имеют один и тот же результат.

301 редирект в.htaccess (Apache)

Создание 301 редиректа в файле.htaccess является самым популярным способом сделать переадресацию. Он достаточно прост и доступен всем пользователям, которые используют в качестве сервера Apache.

Файл.htaccess находится в корневом каталоге Вашего сайта. Попасть туда можно через FTP подключение или файловый менеджер, который доступен практически у всех хост-провайдеров.

Обратите внимание, что название файла начинается со служебного символа — точки. В некоторых файловых системах подобные документы по умолчанию скрыты. В таком случае, необходимо поменять настройки, чтобы увидеть.htaccess.

Мы не будем подробно разбирать все инструкции файла.htaccess, рассмотрим только те, что касаются redirect 301.

Для начала необходимо убедиться, что у Вас установлен модуль mod_rewrite, так как именно он отвечает за переадресацию URL адресов. По этому поводу Вы можете обратиться к своему хост провайдеру или самостоятельно найти и проверить файл конфигурации Apache (httpd.conf)

Подготавливаем.htaccess к работе

Создаем или открываем уже существующий файл.htaccess. Прописываем в нем следующие строки:

Это запись-условие. Она проверяет установлен ли на Apache необходимый нам модуль mod_rewrite. Если таковой имеется, то выполняется все, что указано между тегами и . Если отказаться от этой инструкции, то при отсутствии модуля будет выводится ошибка.

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

RewriteEngine on

Данная запись позволит активировать модуль mod_rewrite.

Следующей строкой прописываем:

RewriteBase /

Подобная команда устанавливает базовый URL. Обычно это сам домен, примеру http://example.ru. Именно от установленного адреса мы и будем отталкиваться при дальнейшей работе.

Если Вы все верно прописали, то итогом будет вот такой файл:

Вот и все, наш.htaccess подготовлен для добавления перенаправлений.

Добавляем в.htaccess редирект

Существуют две основные инструкции, при помощи которых можно сделать перенаправление:

Redirect 301 — самый простой вид редиректа, предназначен для переадресации со страницы на страницу как внутри одного домена, так и в рамках нескольких доменных адресов. Работает с URL без параметров.

RewriteCond / RewriteRule — более гибкие и сложные правила переадресации. Обычно используются для массовых редиректов.

Теперь о каждом подробнее.

Redirect 301

Самая простая во всех смыслах инструкция. Ее синтаксис умещается в одну строку:

Redirect 301

Между адресами всего один пробел. Никаких точек, дефисов и других сторонних символов.

Пример использования редиректа:

Redirect 301 /old-page.html http://example.ru/new-page.html

В файле это выглядит следующим образом:

Это все, что нужно знать о данной инструкции.

RewriteRule (RewriteCond)

Это составная инструкция, которая делится на 2 основные команды.

RewriteCond — Задает условие для следующей за ней директивы RewriteRule. Отдельно не применяется.

RewriteRule — Описывает правило изменения URL адреса.

Давайте сразу рассмотрим пример использования. Ниже присутствует часть файла.htaccess. Данный отрывок отвечает за 301 редирект с домена без WWW, на домен с WWW.

Будем разбирать по строчкам.

# BEGIN WordPress RewriteEngine On RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1

1 строка . Закомментированный текст. Комментарии в файле.htaccess начинаются с «#». На исполнение файла никак не влияет.

2 строка . Проверка наличия модуля mod_rewrite.

3 строка . Активация модуля mod_rewrite.

4 строка . Директива RewriteCond. Проверяет, есть ли «www» в начале адреса. Если нет, то срабатывает ниже расположенная RewriteRule.

5 строка . Директива RewriteRule. Переадресовывает на «www».

6 строка . Окончание контейнера проверки наличия модуля mod_rewrite.

Мы не будем подробно расписывать синтаксис и все возможные команды, которые применяются при работе с файлом.htaccess в данной статье, так как это очень глобальная и сторонняя от SEO тема. Примеры редиректов Вы сможете найти .

301 редирект при помощи PHP

Помимо файла.htaccess, 301 redirect возможно сделать посредством php. Суть метода очень проста и задействует заголовки отправляемые сервером на запрос клиента.

Чтобы сделать редирект, в документе необходимо прописать php код следующего содержания:

Таким образом, при обращении к странице клиент получит необходимый нам заголовок содержащий переадресацию.

Обратите внимание, что до вызова header, выводится ничего не должно, в противном случае Вы получите ошибку. Речь идет об «echo» или «print». Лучше всего размещать этот код в самом начале скрипта.

А вот вариант с сохранением всех параметров запроса и адреса страницы (то есть, домен будет изменен, а оставшаяся часть URL останется прежней) :

Подобный метод переадресации достаточно прост в реализации, однако имеет существенный минус. Код необходимо физически добавлять для каждой страницы, с которой нужно сделать редирект.

301 редирект в Nginx

Мы не будем подробно рассматривать все нюансы настройки 301 редиректа в nginx, так как это очень глобальная и отдаленная от SEO продвижения тема. Рассмотрим лишь несколько самых популярных перенаправлений.

301 редирект с http на https для Nginx

После этих процедур поисковая система поймет, какое зеркало должно участвовать в поиске, а пользователи всегда будут переходить на https.

Только 301 редирект способен склеивать доменные имена.

Функция 4. Приводим URL адреса к единому виду

Используется 301 редирект и для того, чтобы привести все URL адреса сайта в единый вид. Предположим, что часть URL адресов имеет в конце слэш, а часть нет. В таком случае нам необходимо определиться, к какому формату мы приводим адреса и сделать редирект.

К примеру, у нас на сайте все URL имеют слэш в конце строки. При появлении адреса без слэша, с него автоматически делается переадресация.


301 редирект или rel=»canonical»

Как минимум в ряде случаев, атрибут rel=»canonical» считают альтернативной 301-у редиректу. Давайте разберемся, так ли это.

Напомним, что rel=»canonical» позволяет указать поисковой системе основной URL адрес страницы. Подробнее о данном атрибуте мы писали ранее .

Для начала нужно понять, в чем отличия данных методов. С этой целью мы создали следующую таблицу.

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

Одна из основных функций 301 редиректа, без которой нельзя обойтись в SEO, это склейка зеркал .

Зеркалами для поисковой системы являются сайты с одинаковым контентом (или частичной копией контента) доступные по разным URL адресам. Как ни странно, практически у каждого сайта в Интернете есть зеркала. Все дело в том, что для поисковой системы домен с www и без www это разные адреса.

То есть, www..ru для поисковика это различные URL, по которым доступен один и тот же контент. Этот случай настолько популярен, что в Яндекс Вебмастере есть раздел «Переезд сайта», где предоставляется возможность выбора основного зеркала, которое будет в поиске. Переадресация при этом, конечно, не появляется. Эта инструкция предназначена только для робота поисковой системы.

В случае с www, 301 редирект часто не ставится, так как домены признаются зеркалами автоматически. Хотя такая возможность есть, а иногда даже необходима. Про переадресацию с www на БЕЗ www мы .

Во всех остальных случаях для склейки понадобится переадресация.

Предположим, у нас есть посещаемый коммерческий ресурс. Компания, которая им владеет, объединяется с другой фирмой, в результате чего необходимо делать ребрендинг, в том числе и сменить доменное имя сайта. Как быть в этом случае? Ведь сайт стабильно приносит клиентов из органической выдачи.

Решение есть: необходимо новый домен склеить с существующим. При этом обновленный адрес должен стать основным и присутствовать в поисковой выдаче. В этом нам поможет 301 редирект. Нужно привязать к сайту новый домен, после чего проставить 301 редирект со всех URL содержащих старое доменное имя на соответствующие URL с новым доменным именем. О том, как это делается, .

Стоит сказать, что после данной процедуры ТИЦ, «ссылочный вес » и другие «пузомерки» будут перенесены на новый домен.

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

Разница между 301 и 302 редиректом

С точки зрения SEO 301 редирект кардинально отличается от 302. Даже несмотря на то, что их синтаксис очень схож, для поисковой системы они несут совершенно разный смысл. Вот их основное отличие:

301 редирект (Permanent Redirect) — постоянное перемещение страницы;

302 редирект (Temporary redirect) — временное перемещение страницы;

Из это вытекают все их различия и принципы использования.

Проще говоря, делая 301 редирект мы «говорим» поисковой системе о том, что про старый адрес можно забыть и весь материал теперь навсегда доступен по новому URL.

В случае же с 302 редиректом мы сообщаем, что переадресация выполнена временно и вскоре старый адрес будет снова доступен. То есть, нужно ненадолго передать трафик с одной страницы на другую, после чего все вернется на круги своя.

*Стоит сказать, что 301 и 302 редирект имеют различные степени риска попадания под фильтры поисковых систем за мошенничество. Безусловно, не нарушая никаких правил к Вам вряд ли будут применены санкции, однако мы все равно оценим риски. Так как 302 редирект часто используется в черном SEO , то риск при его использовании на порядок выше, нежели у 301 редиректа.

Когда оправдано использование 302 редиректа?

Использование 302 редиректа оправдано в случаях, когда необходимо на время перенаправить пользователей на другую страницу сайта. Вот примеры таких ситуаций.

  • Плагин Simple 301 Redirects

    Принцип установки точно такой же, как и у Redirection. В поиске плагинов необходимо найти:

    После активации плагина, в левом меню WordPress в пункте «Настройки » появится ссылка «301 redirects «. Переходим по ней и попадаем на страницу с двумя полями.

    Первое поле — откуда ставим редирект, второе — куда . Тут нет сложных настроек, все максимально просто.

    301 редирект в Joomla!

    Для создания 301 редиректа, в Joomla! 3 уже имеется стандартный компонент. Найти его можно развернув меню «Компоненты » — > «Перенаправление «.

    После перехода Вы увидите все имеющиеся редиректы, если они есть.

    Для создания нового, необходимо нажать на кнопку «Создать» и заполнить все обязательные поля (отмечены звездочкой).

    Перенаправление сразу должно заработать после сохранения. Если этого не произошло, необходимо выполнить нижеуказанные действия.

    Что делать, если 301 редирект в Joomla! не работает?

    Если при использовании стандартного компонента перенаправлений в Joomla! 3, редирект так и не заработал, необходимо:

    Открыть файл configuration.php находящийся в корневой папке Вашего сайта;

    Найти переменную public $live_site;

    Присвоить ей в качестве значения домен своего сайта.

    Сохраняем изменения и проверяем редирект.

    301 редирект в Opencart 2

    Для Opencart 2 существует готовый модуль, позволяющий создавать постоянную переадресацию. Его название «Менеджер 301 редиректов «.

    Он поддерживает всевозможные варианты 301-го редиректа и совместим со всеми версиями Opencart 2.x.

    Данный модуль может конфликтовать с ранее установленными SEO расширениями, поэтому, ознакомьтесь с инструкцией перед покупкой и установкой.

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

    301 редирект в Modx

    Для Modx Revo существует множество готовых решений реализации 301-го редиректа. Одно из них Redirector. Установка и использование данного расширения не составляет никаких сложностей. Если, все же, у Вас возникли трудности, Вы можете подробно изучить любой вопрос на официальной странице https://docs.modx.com/extras/revo/redirector.

    301 редирект для Wix

    В Wix существует стандартная функция, позволяющая сделать 301 редирект. Ничего придумывать не придется, просто следуйте нижеуказанной инструкции.

    Переходим в режим управления сайта;

    Находим раздел SEO и переходим в него;

    Пролистываем страницу вниз до блока «Переадресация: 301 редирект»;

    Нажимаем «Настроить переадресацию»;

    В соответствующие поля вводим старый и новый URL;

    Проверяем работоспособность переадресации.

    Распространенные редиректы

    Ниже мы собрали самые распространенные варианты 301-х редиректов, которые создаются в файле.htaccess. Во многих примерах необходимо заменить демо данные, иначе переадресация будет работать некорректно.

    301 редирект с http на https

    Обязательный редирект при переходе на защищенный протокол. В случае его отсутствия, пользователям будут показываться страницы с различными протоколами, а в поиск попадут дубли.

    RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1

    Итогом данного редиректа будет являться добавление ко всем URL сайта протокола https.

    301 редирект с www на БЕЗ www

    Если в качестве основного зеркала сайта Вы выбрали домен без WWW, то Вам необходим соответствующий редирект. Его пример ниже.

    RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1

    Итогом данного редиректа будет являться «удаление» из всех URL адресов префикса «WWW».

    301 редирект с БЕЗ www на www

    Если в качестве основного зеркала был выбран домен с WWW, то Вам необходимо добавить ко всем URL соответствующий префикс «WWW». В этом Вам поможет указанный ниже редирект.

    RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1

    Итогом данного редиректа будет являться добавление ко всем URL адресам префикса «WWW».

    301 редирект с одной страницы на другую

    Один из самых простых и распространенных редиректов. Умещается в одну строчку. Позволяет навсегда сменить URL адрес страницы, избавиться от дублей и старых материалов.

    Redirect 301 /page-1/ http://mysite.com/new-page-1/

    Итогом исполнения вышеуказанной инструкции будет являться постоянная переадресация со страницы /page-1/ на страницу /new-page-1/. При этом раздел /page-1/ будет исключен из поиска, а /new-page-1/ получит весь имеющийся «вес».

    Обратите внимание, подобным образом возможно сделать переадресацию только для URL адресов без параметров. То есть, для страницы /page-1/?productID=7389 эта команда работать не будет.

    301 редирект с домена на домен

    Позволяет , а также полностью и безоговорочно перенести сайт на другой домен.

    RewriteEngine On RewriteCond %{HTTP_HOST} domain1.ru RewriteRule (.*) http://domain2.ru/$1

    Итогом вышеуказанного редиректа станет перенаправление всех обращений к domain1.ru на domain2.ru.

    301 редирект для слеша (Удаляем слеш на конце)

    Для того, чтобы поисковая система не загружала и не размещала дубли в поиске, необходимо привести все URL к единому формату. В том числе, это касается и наличия слэша в конце адреса страницы. Даже несмотря на то, что роботы научились исключить из поиска подобного рода дубли, для сайтов без слэша редирект желательно делать.

    RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1

    Итогом будет являться «удаление» слэша в конце URL адреса.

    301 редирект для слеша (Добавляем слеш на конце)

    Обратный от ранее упомянутого редирект. Добавляет слэш в конце строки URL адреса.

    RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/

    Итогом будет являться «добавление» слэша в конце URL адреса.

    301 редирект с index.php (html)

    Во многих CMS системах, в том числе и популярных, при некорректной настройке URL, главная страница становится доступна как по доменному имени, так и по доменному имени + index.php (html). То есть, сайт и сайт/index.php ведут на одну и ту же страницу — главную. Для поисковой системы это дубли, поэтому от них нужно избавляться.

    Пример 1, для index.php RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://сайт/ Пример 2, для index.html RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://сайт/

    Итогом обоих примеров будет редирект с /index.php (html) на «корень сайта», то есть, просто на домен.

    Массовый 301 редирект

    Массовый 301 редирект используется, в основном, при смене структуры сайта, раздела или вида URL адреса. В отличие от единичных редиректов со страницы на страницу, он делается по определенному правилу, под которое подпадают все URL адреса, для которых необходимо перенаправление.

    В некоторых CMS системах по умолчанию используется генерация 301-х редиректов для создания единого адреса с ЧПУ.

    К массовым редиректам можно отнести большинство вышеуказанных примеров, так как их правила распространяются не на один URL адрес, а на все существующие или отобранную группу.

    Редирект со страницы 404 Not Found

    Создание редиректа с несуществующей страницы на главную (или любую другую) технически возможно. В этом нет никакой проблемы. Однако с точки зрения SEO это будет некорректно. При обращении к несуществующему разделу индексирующий робот должен получать соответствующий заголовок — 404. Только так он сможет корректно индексировать сайт. Кроме этого, поисковые системы не любят большое количество редиректов, поэтому их использование нужно сократить до минимума.

    Пример 1. Редирект с 404 страницы на главную

    Вот пример редиректа со всех не найденных страниц на главную.

    ErrorDocument 404 http://www.site.com/301.html

    Итогом данного редиректа будет являться перенаправление всех обращений к страницам 404 на главную страницу сайта.

    Пример 2. Редирект с 404 страницы на главную через 301 редирект

    В данном примере, по факту, используются две переадресации, поэтому поисковые системы его не приветствуют. Однако, если Вам необходимо сделать постоянное перенаправление через 301 редирект, то вот его пример.

    ErrorDocument 404 http://www.site.com/301.html RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule 301.html http://www.site.com/

    Пример 3. редирект с 404 страницы на заранее подготовленную

    Перенаправление возможно сделать не только на главную страницу, но и на любой другой раздел. К примеру, на заранее подготовленную страницу 404. Выглядит это следующим образом:

    ErrorDocument 404 /404.html

    Проверяем 301 редирект

    После того, как Вы настроили 301 редирект, его необходимо проверить на корректность работы. Для этого введите в адресной строке своего браузера URL страницы, с которой была сделана переадресация. Если Вы видите новую страницу, то есть, ту, на которую делали редирект — то все корректно работает.

    Для того, чтобы удостовериться, что сработал именно 301 редирект, необходимо перейти в Яндекс Вебмастер в раздел «Инструменты » — > «Проверка ответа сервера «.

    В поле «Опрашиваемый URL » необходимо ввести адрес страницы, с которой Вы делали перенаправление. Итогом проверки должен быть код статуса HTTP «301 Moved Permanently «

    В случае, если при обращении к старой странице перенаправление не происходит или код статуса HTTP не «301 Moved Permanently» — проверьте корректность настройки редиректа.

    Что делать, если 301 редирект не работает?

    Мы не в силах перечислить все причины, по которым может не работать 301 редирект, но отметим самые распространенные. Вот список проблем, из-за которых чаще всего не работает переадресация:

    Какой он - правильный 301 редирект?

    Правильный 301 редирект отвечает всем нижеперечисленным требованиям:

    Ведет на страницу без последующих перенаправлений . То есть, если Вы сделали редирект со страницы А на страницу Б , то с последней (Б ) уже не должно быть никаких переадресаций. Она должна быть конечной точкой, куда попадет пользователь;

    Переадресовывает на страницу, код ответа которой 200 ОК . То есть, проще говоря, на существующий и доступный раздел. Неприемлемо делать перенаправление на несуществующую или ограниченную в доступе страницу;

    Сделан без синтаксических и логических ошибок;

    301 redirect выбран осознанно. Убедитесь, что Вам нужен именно он, а не 302-ой или 307-ой. Выбор типа переадресации очень важен, ведь с точки зрения SEO, разница между ними глобальна;

    Был сделан сознательный выбор между атрибутом rel=»canonical» и перманентным редиректом. Не стоит делать переадресации когда попало;

    Если Ваш редирект полностью удовлетворяет всем вышеуказанным требованиям, то Вы можете считать его просто великолепным.

    Как убрать 301 редирект?

    Если Вам необходимо убрать 301 редирект, происхождение которого неизвестно, то придется сделать несколько достаточно простых шагов. Что бы их выполнить потребуется доступ к CMS, корневому каталогу сайта и поверхностные знания php/html.

  • Послать каждый может. А вот правильно перенаправить – это целое искусство. Но еще труднее дается перенаправление пользователей на нужный путь в интернете. Для этого лучше всего подходит редирект на php .

    Что за редирект?

    В веб-программировании возникают ситуации, когда нужно перенаправить пользователя, переходящего по ссылке, на другой адрес. Конечно, на первый взгляд реализация такого перенаправления выглядит немного «незаконной ». На практике же, такой редирект востребован не только среди злоумышленников, но и среди честных вебмастеров:

    В каких случаях может потребоваться редирект:

    • Когда происходит замена движка сайта – в результате этого меняется архитектура всего ресурса. После чего возникает проблема, как сделать редирект;
    • При перекройке структуры ресурса – происходит добавление, удаление или перенос целых разделов или одного материала. Пока происходит этот процесс, временно можно организовать перенаправление пользователя на нужный раздел;
    • Если сайт недавно сменил свое доменное имя – после смены имени домена старое еще некоторое время будет фигурировать в поисковой выдаче. В этом случае редирект пользователя на новый домен будет реализован поисковой системой автоматически;
    • В процессе авторизации – как правило, на большом сайте есть две группы пользователей: обычные посетители и администраторы ресурса. В таком случае имеет смысл реализовать редирект каждого пользователя согласно его правам и роли. После авторизации администратор или модераторы сайта попадают в административную часть ресурса, а посетители – на пользовательскую часть ресурса.
    Особенности редиректа на php

    В отличие от других языков php обладает некоторыми преимуществами в реализации редиректа:

    • Php является серверным языком программирования. Поэтому перенаправление будет происходить не в html коде страниц, отображаемых в браузере, а в скрипте, размещенном на сервере;
    • Редирект на php может быть реализован несколькими способами. Что во многом расширяет его применение;
    • Благодаря обработке данных на сервере перенаправление, реализованное с помощью php, менее восприимчиво к действию фильтров поисковых систем.

    Для редиректа в php используется функция header() . Она применяется для отправки заголовка http . Ее синтаксис:

    void header (string $string [, bool $replace = true [, int $http_response_code ]])

    Принимаемые функцией аргументы:


    • string $string – строка заголовка;

    Существует два типа этого аргумента. Первый предназначен для отправки кода состояния соединения. Он начинается с "HTTP/". Другой тип вместе с заголовком передает клиентскому браузеру код состояния (REDIRECT 302). Этот аргумент начинается с "Location:"


    • bool $replace – является необязательным атрибутом типа bool . Отвечает за переопределение предыдущего заголовка. Если будет задано true , то предыдущий заголовок или заголовки одного типа будут заменены. Если в аргументе задано false , то перезапись заголовка не состоится. По умолчанию, задано значение true ;
    • http_response_code – аргумент принудительно устанавливает код ответа HTTP . Установка кода пройдет успешно при условии, что аргумент string не будет пустым.

    Код состояния HTTP представляет собой часть верхней строки ответа сервера. Код состоит из трех цифр, после которых идет поясняющая надпись на английском языке. Первая цифра отвечает за класс состояния. Редиректу соответствуют коды от 300 до 307. Их полное описание можно найти в соответствующей технической документации.

    При использовании функции header() для редиректа внешних ссылок большое значение имеет место расположения ее вызова. В коде он должен находиться выше всех тегов html :


    Применение редиректа header()

    Для демонстрации действия функции на локальном сервере нужно создать два файла. Один из них назовем redirect.php , а другой redirect2.php . Внутри первого разместим вызов функции в следующем формате:

    В другом файле помещаем строку:

    echo "Привет! Вы находитесь в файле redirect2.php";


    Еще несколько практических примеров использования редиректа на php :

    • Принудительная передача кода состояния http – при использовании первого аргумента функции header() типа «location » по умолчанию в заголовок передается код состояния «302 » (временно перемещен ). Это может стать проблемой при переносе ресурса на другое доменное имя. В поисковиках такое временное перенаправление может затянуться. Ведь поисковик постоянно анализирует код состояния. А в нем записано «временно перемещен ». Пример принудительной перезаписи кода состояния «302 » на «301 » (постоянно перемещен ):

    Также перезапись возможна в два этапа. Первая строка производит перезапись кода состояния, а вторая перенаправляет на новый адрес:

    • Использование редиректа внешних ссылок для перенаправления в зависимости от роли пользователя. Роль определяется во время процедуры аутентификации. Значение для обработки записывается в переменную $who :

    • Упрощенный практический пример реализации редиректа внешней ссылки – клик по ссылке ведет на страницу php . Отсюда пользователя через 5 секунд перекидывает на Рамблер. Код html :

    Нажми меня

    Код файла redirect3.php :


    Ну, вот мы и научились основам редиректа на php. Теперь можно смело браться за перенаправление пользователей в нужное русло. Главное не ошибиться в направлении, а то приведете всех своих юзеров на чужой сайт…

    С переадресацией (она же - «редирект») сталкивался каждый пользователь интернета. Достаточно просто выбрать в поисковой системе любой сайт из выдачи и поисковая система автоматически перенаправит Вас на сайт. В этой статье мы расскажем о том, какие виды переадресации существуют и как их настроить.

    Основные операторы регулярных выражений

    Для начала давайте разберемся с основными операторами регулярных выражений (флаги, модификаторы, специальные символы):

    Спецсимволы:

    • ^ — ограничение слева (начало строки);
    • $ — ограничение справа (конец строки);
    • . — любой символ;
    • () — переменная;
    • \ — экранирование (символ после \ считается обычным, а не спецсимволом);
    • — диапазон значений;
    • ! — спецсимвол отрицания.

    Модификаторы:

    • ? — символ повторяется 0 или 1 раз;
    • + — 1 и более символов (до 65536);
    • * — 0 и более символов (до 65536).
    Как настроить 301 редирект htaccess

    Начнем с 301 редиректа в htaccess. Во-первых, он представляет из себя автоматическую переадресацию с одного адреса на другой. Он вполне может применяться в том случае, когда сайт переводится с протокола http на https, когда сайт перенастраивается с «полноразмерных» адресов на ЧПУ (т.е. было https://www.karcher.xyz/content/news/31-01-2017/razdatka , стало https://www.karcher.xyz/ razdatka), а также для «склеивания» страниц-дублей. Во-вторых, 301 редирект сообщает поисковым системам, что «ребята, имеющийся у вас адрес уже не работает, поэтому идите вон туда», а они такие «ОК, учтем». Таким образом, переадресация происходит безболезненно, без потери позиций и ссылочной массы.

    Но что будет, если «Ой, да ну нафиг? Буду я еще с переадресациями заморачиваться, только время потеряю!»? Можно сделать и так, НО… история «старой» страницы будет утрачена, а «новая» будет ранжироваться «с нуля». Как следствие - потеря позиций и ссылочной массы (это в лучшем случае).

    Варианты применения 301 редиректа:

    • Склейка доменов;
    • Переезд сайта на другой адрес (может пригодиться при попадании сайта под какие-либо фильтры);
    • Для увеличения показателей тИЦ, PR и увеличения трафика при покупке другого домена (настраивается редирект на ресурс, который нуждается в поднятии тИЦ и PR);
    • При смене движка сайта (в этом случае настройка 301 редиректов строго обязательна, в противном случае гарантирована полная потеря трафика);
    • при переезде с http на https;
    • склейка «дублей»

    и т.д., всех причин не перечислить.

    301 Редирект при смене домена основного сайта

    Итак, Вы решили сменить домен. Сразу же даем готовое решение:

    User-agent: Yandex

    Host: newsite.com

    • настраиваем 301 редирект для всех страниц сайта (кроме файла robots.txt) с помощью приведенного ниже кода:

    RewriteCond %{REQUEST_FILENAME} robots.txt$

    RewriteRule ^([^/]+) $1 [L]

    RewriteCond %{HTTP_HOST} !^www\.site\.com

    301 редирект при смене адреса страницы

    Постраничный редирект (когда меняется адрес страницы) осуществляется с помощью приведенного ниже кода:

    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^www\.stokrat\.org$

    RewriteRule ^stranica/nastrojka-301-redirekta/$ https://www.сайт/newpage/

    Именно этот код используется при «переезде» страниц, например, на ЧПУ.

    Настроить редирект с www на домен без www в htaccess

    Упоминание www. в адресе домена уже давно не является актуальным. Тем не менее сайтов с www. полно. Склеивание доменов с www. и без должно производиться в строго обязательном порядке, т.к. поисковые системы воспринимают эти 2 домена как 2 разных сайта с разными тИЦ, PR, посещаемостью, ссылочной массой и всем остальным. Следовательно, один из них - оригинал, а второй - «самозванец» с «ворованным контентом». Чтобы этого не происходило - домены с www. и без необходимо «склеить» с помощью 301 редиректа. Код настройки приведен ниже.

    Код редиректа с www на без www в htaccess выглядит так:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.site.ru$

    Теперь давайте разберемся с директивами.

    RewriteEngine on/off - если выражаться простым человеческим языком - она служит выключателем 301 редиректа.

    RewriteCond — в этой директиве прописываются условия для «срабатывания» следующей директивы.

    RewriteRule — директива преобразования одного адреса в другой.

    Настроить 301 редирект с http на https через htaccess

    Переезд с http на https многие считают «современным трендом». Однако, на сегодняшний день данная мера является обязательной (хотя формально она таковой не является). И вот настал тот час, когда Вы получили SSL-сертификат, Ваш сайт уже работает и по http и по https. Все что осталось настроить в файле.htaccess 301 редирект с http на https версии страниц сайта. Код для настройки приведен ниже.

    RewriteRule ^(.*)$ https://site.ru/$1

    А вот код на обратный редирект с https на http. Как видите, отличие всего в 1 символ:

    RewriteCond %{SERVER_PORT} !^443$

    RewriteRule ^(.*)$ http://site.ru/$1

    Редирект со страниц index.php, index.html

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

    Поскольку в подзаголовке упомянуты index.php и index.html - Вы уже догадались, что с помощью 301 редиректа мы будем избавляться от дублей главной страницы:

    Однако, если у главной страницы есть дубль вида site.ru/index.php, вполне вероятно, что и у остальных страниц есть дубли вида site.ru/index.php/page.html (при оригинальном адресе site.ru/page.html ). Это плохо, поэтому также требуется настройка 301 редиректа с помощью приведенного ниже кода:

    RewriteRule ^index\.php/(.*)$ /$1

    Нередки случаи, когда у главной страницы есть дубль вида

    site.ru/main.html , для которого так же необходимо прописывать 301 переадресацию на site.ru :

    RewriteEngine On

    RewriteCond %{THE_REQUEST} ^{3,9}\ /main\.html\ HTTP/

    Либо альтернативный вариант:

    Redirect 301 /main.html HYPERLINK "http://site.ru/" http :// site . ru /

    А вот теперь рассмотрим обратную ситуацию - когда Вы хотите склеить дубли, настроив переадресацию с site.ru на site.ru/main.html . Сделать это можно с помощью приведенного ниже кода.

    RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)

    RewriteRule .* %1.html

    RewriteRule ^(.*)/$ /$1.html

    Ну а если Вам важно, чтобы адреса всех внутренних страниц отображались без.html на конце, то redirect настраивается вот таким кодом:

    RewriteCond %{REQUEST_URI} \.html$

    RewriteRule ^(.*)\.html$ /$1

    Теперь о том как сделать редирект со страницы на страницу а именно с.htm на страницы.html. Для настройки такой переадресации достаточно добавить в.htaccess следующий код:

    RewriteRule ^(.*)\.htm$ $1.html

    Редиректы с адресов со слэшами в конце и без них

    Для начала рассмотрим еще один вид дублей страниц - страницы вида http://site.xyz/page и http://site.xyz/page/ - кроме слэша в конце, они ничем не отличаются. Настраивать redirect можно и с первой на вторую, и со второй на первую. Рассмотрим оба варианта:

    Редирект с http://site.xyz/page на http://site.xyz/page/:

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_URI} !\..+$

    RewriteCond %{REQUEST_URI} !/$

    RewriteRule (.*) http://www.site.ru/$1/

    Redirect с http://site.xyz/page/ на http://site.xyz/page:

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{REQUEST_URI} ^(.+)/$

    RewriteRule ^(.+)/$ /$1

    Причем абсолютно не важно, будет ли у Вас после редиректа слэш в конце адреса или нет. Главное - чтоб эти адреса были склеены с помощью 301 редиректа.

    Редирект на мобильную версию сайта

    Разумеется, если Ваш сайт работает на движке WordPress или Joomla, то настроить редирект на мобильную версию сайта можно с помощью плагинов.

    Однако, Google является сторонником адаптивного дизайна. Следовательно, выделять отдельный домен/поддомен для мобильной версии не нужно. Т.е. в Google утверждают, что «если есть возможность обойтись без редиректов на мобильную версию - именно так и нужно поступать».

    Но что делать, если без таких редиректов все-таки не обойтись?

    Можно настроить редирект через файл.htaccess

    RewriteEngine On

    RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml"

    RewriteCond %{REQUEST_URI} ^/$

    RewriteRule ^ http://m.domain.com%{REQUEST_URI}

    Настройка мобильного редиректа через PHP

    Необходимо воспользоваться специальной библиотекой Mobile Detect, она необходима для того, чтоб распознать, с мобильного устройства пришел пользователь, или со стационарного.

    $detect = new Mobile_Detect;

    if ($detect->isMobile()) {// код}

    if ($detect->isTablet()) {// код}

    if ($detect->isiOS()) {// код}

    if ($detect->isAndroidOS()) {// код}

    Из этого кода становится очевидно, что можно распознать не только компьютер/смартфон/планшет, но и его операционную систему.

    JavaScript редирект

    С помощью приведенного ниже кода происходит переадресация на мобильный поддомен. Основанием для переадресации служит разрешение экрана - до 480 пикселей в ширину. Именно в ширину, не в высоту.

  • if (screen.width на

    Способ 2. Настройка редиректа на site.com через.htaccess, вставив вот этот код:

    RewriteCond %{QUERY_STRING} ^route=common/home$

    RewriteRule ^index\.php$ http://site.com/?

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

    site.com/index.php?path=83_94_113&route=product/category

    На такие ссылки смотреть очень больно, причем в прямом смысле, т.к. глаза реально начинают болеть при виде таких адресов. В том же.htaccess можно настроить редирект на «человеческие» адреса вида site.com/category с помощью такого кода:

    RewriteCond %{QUERY_STRING} ^path=83_94_113&route=product/category$

    RewriteRule ^index\.php$ http://site.com/new-category?

    Но что делать с динамическими адресами, которые из-за привязки к определенной секции имеют вид site.com/katalog?c=okna-pvkh ?

    Программисты довольно долго искали решение. «Методом тыка» (точнее - проб и ошибок) решение было найдено. В данном случае происходит редирект на главную страницу сайта:

    RewriteCond %{QUERY_STRING} ^c=okna-pvkh$

    RewriteRule katalog http://site.com/?

    Примечания и ошибки

    Теперь поговорим о том, как не допускать ошибок при настройке 301 редиректа:

    • Нельзя нарушать последовательность правил переадресации. После настройки редиректа необходимо убедиться, что настройка не дала каких-либо «побочных эффектов». Если нарушить последовательность правил, то ранее настроенные редиректы могут либо прекратить функционировать, либо функционировать неправильно. Противоречий в правилах быть не должно.
    • Не стесняйтесь пользоваться официальными мануалами, т.к. у 301 редиректа из-за непростого синтаксиса есть множество особенностей. Упустить какой-то нюанс при настройке - проще простого.
    • После очередных «допиливаний» ВСЕГДА проводите полную проверку работоспособности тех правил, которые были внедрены ранее. Настройка без проверки - это не настройка даже «для галочки». Один лишний символ может «обвалить» работу всего сайта, либо заставить его работать неправильно. За другими программистами нам уже не раз приходилось исправлять работу сайта, когда с адреса site.com/oldpage происходит 301 редирект на site.com/newpage , а затем с помощью того же 301 редиректа происходит переадресация обратно на site.com/oldpage и далее «по кругу».

    Ну и в заключение приведем несколько примеров, когда применять 301 переадресацию вообще нельзя.

    Во-первых, «многоходовки», когда идет череда из нескольких 301 редиректов подряд. Гораздо правильнее настроить редирект сразу на «финишный» адрес.

    Во-вторых, если по каким-то причинам есть 2 страницы с дублирующим контентом, но нужно сохранить для пользователей обе.

    В-третьих, редиректы «не туда». Т.е. если страница переехала с первого адреса на второй, а при настройке редиректа Вы ошибочно указываете адрес совершенно другой страницы.

    В-четвертых, redirect на страницу, которая работает по каким-то причинам очень некорректно. Страница должна работать стабильно и отдавать либо код 200, либо код 404.

    В-пятых, редирект файла robots.txt. Это запрещено правилами многих поисковых систем. Более того, многие допускают одну и ту же ошибку - когда настраивают htaccess редирект на https с http://site.xyz/robots.txt на https://site.xyz/robots.txt . Файл robots.txt должен быть доступен по обоим адресам без всяких переадресаций. Ровно то же самое касается и xml-карты сайта.

    Послать каждый может. А вот правильно перенаправить – это целое искусство. Но еще труднее дается перенаправление пользователей на нужный путь в интернете. Для этого лучше всего подходит редирект на php .

    Что за редирект?

    В веб-программировании возникают ситуации, когда нужно перенаправить пользователя, переходящего по ссылке, на другой адрес. Конечно, на первый взгляд реализация такого перенаправления выглядит немного «незаконной ». На практике же, такой редирект востребован не только среди злоумышленников, но и среди честных вебмастеров:

    В каких случаях может потребоваться редирект:

    • Когда происходит замена движка сайта – в результате этого меняется архитектура всего ресурса. После чего возникает проблема, как сделать редирект;
    • При перекройке структуры ресурса – происходит добавление, удаление или перенос целых разделов или одного материала. Пока происходит этот процесс, временно можно организовать перенаправление пользователя на нужный раздел;
    • Если сайт недавно сменил свое доменное имя – после смены имени домена старое еще некоторое время будет фигурировать в поисковой выдаче. В этом случае редирект пользователя на новый домен будет реализован поисковой системой автоматически;
    • В процессе авторизации – как правило, на большом сайте есть две группы пользователей: обычные посетители и администраторы ресурса. В таком случае имеет смысл реализовать редирект каждого пользователя согласно его правам и роли. После авторизации администратор или модераторы сайта попадают в административную часть ресурса, а посетители – на пользовательскую часть ресурса.
    Особенности редиректа на php

    В отличие от других языков php обладает некоторыми преимуществами в реализации редиректа:

    • Php является серверным языком программирования. Поэтому перенаправление будет происходить не в html коде страниц, отображаемых в браузере, а в скрипте, размещенном на сервере;
    • Редирект на php может быть реализован несколькими способами. Что во многом расширяет его применение;
    • Благодаря обработке данных на сервере перенаправление, реализованное с помощью php, менее восприимчиво к действию фильтров поисковых систем.

    Для редиректа в php используется функция header() . Она применяется для отправки заголовка http . Ее синтаксис:

    void header (string $string [, bool $replace = true [, int $http_response_code ]])

    Принимаемые функцией аргументы:


    • string $string – строка заголовка;

    Существует два типа этого аргумента. Первый предназначен для отправки кода состояния соединения. Он начинается с "HTTP/". Другой тип вместе с заголовком передает клиентскому браузеру код состояния (REDIRECT 302). Этот аргумент начинается с "Location:"


    • bool $replace – является необязательным атрибутом типа bool . Отвечает за переопределение предыдущего заголовка. Если будет задано true , то предыдущий заголовок или заголовки одного типа будут заменены. Если в аргументе задано false , то перезапись заголовка не состоится. По умолчанию, задано значение true ;
    • http_response_code – аргумент принудительно устанавливает код ответа HTTP . Установка кода пройдет успешно при условии, что аргумент string не будет пустым.

    Код состояния HTTP представляет собой часть верхней строки ответа сервера. Код состоит из трех цифр, после которых идет поясняющая надпись на английском языке. Первая цифра отвечает за класс состояния. Редиректу соответствуют коды от 300 до 307. Их полное описание можно найти в соответствующей технической документации.

    При использовании функции header() для редиректа внешних ссылок большое значение имеет место расположения ее вызова. В коде он должен находиться выше всех тегов html :


    Применение редиректа header()

    Для демонстрации действия функции на локальном сервере нужно создать два файла. Один из них назовем redirect.php , а другой redirect2.php . Внутри первого разместим вызов функции в следующем формате:

    В другом файле помещаем строку:

    echo "Привет! Вы находитесь в файле redirect2.php";


    Еще несколько практических примеров использования редиректа на php :

    • Принудительная передача кода состояния http – при использовании первого аргумента функции header() типа «location » по умолчанию в заголовок передается код состояния «302 » (временно перемещен ). Это может стать проблемой при переносе ресурса на другое доменное имя. В поисковиках такое временное перенаправление может затянуться. Ведь поисковик постоянно анализирует код состояния. А в нем записано «временно перемещен ». Пример принудительной перезаписи кода состояния «302 » на «301 » (постоянно перемещен ):

    Также перезапись возможна в два этапа. Первая строка производит перезапись кода состояния, а вторая перенаправляет на новый адрес:

    • Использование редиректа внешних ссылок для перенаправления в зависимости от роли пользователя. Роль определяется во время процедуры аутентификации. Значение для обработки записывается в переменную $who :

    • Упрощенный практический пример реализации редиректа внешней ссылки – клик по ссылке ведет на страницу php . Отсюда пользователя через 5 секунд перекидывает на Рамблер. Код html :

    Нажми меня

    Код файла redirect3.php :


    Ну, вот мы и научились основам редиректа на php. Теперь можно смело браться за перенаправление пользователей в нужное русло. Главное не ошибиться в направлении, а то приведете всех своих юзеров на чужой сайт…

    Last modified on February 25th, 2017 by Vincy.

    PHP redirect mechanism is used to navigate the user from one page to another without clicking any hyperlinks. This will be helpful in such circumstances where the redirect should be done in the background. For example, when the user is accessing payment gateway, the redirect should automatically be taken place to notify URL using PHP script.

    PHP provides predefined function, named header(),for URL redirection. Using this header() function, we need to send location header by specifying URL to which the page should be redirected.

    Unlike where there are several ways to handle URL redirect works based on the browser, PHP avoids such confusion and have header() function create the same effect in all browsers. For that only, we have concluded with JavaScript redirect article that server side redirect is preferable.

    PHP Redirect Syntax header("Location: target-url ");

    In the above syntax of PHP redirect, we need to replace with a valid URL to which we want to move. We can specify either absolute URL or relative URL for this location header. If we specify relative URL, it will search for the page in our domain where we exist.

    Note: Before specifying page URL for location header, we should make sure that the page exists.

    Caution before Redirect

    Before executing PHP redirect, we should ensure about, no output is sent to the browser before the line where we call the header() function. For example,

    Echo "PHP Redirect"; header("Location: сайт");

    This script will display the following warning notice to the browser.

    Warning: Cannot modify header information - headers already sent by (...

    It is not only applicable for header function, rather for all the PHP functions like set_cookie(), session_start() and etc., whatever can modify the header. For that, we should remove all content which will stop sending location header to the browser.

    Possible Ways of Sending Output
    • HTML content like text or tags.
    • Unnecessary white spaces before PHP delimiters.
    • PHP error or warning notices that occur before calling redirect.
    • PHP , like, echo(), print().
    Safety Measures from output being Sent before PHP Redirect
    • Since HTML content should be sent before the redirect, we can separate PHP logic from HTML content.
    • For being in the safety side we can put exit command after redirect statement of PHP file. For example, header("Location: сайт"); exit;
    • We can enable PHP output buffering to stop sending output to the browser and stored into a buffer instead.


  •