Безнадежный redirect php. Как сделать редирект
Типы редиректов
Есть несколько типов редиректов, рассмотрите каждый из них в кратце, чтобы определить какой из них вам больше подходит.
Редирект через htaccess
- самый популярный, и довольно простой способ.
Чтобы его сделать,
вам понадобится создать в папке сайта файл с названием.htaccess (обратите внимание, что
название файла начинается с точки, это не опечатка). Если вы используете CMS WordPress или
Joomla, то скорее всего этот файл у вас уже есть, в этом случае вам нужно будет просто
отредактировать его.
Читайте ниже чтобы узнать какие именно инструкции в нем нужно прописать, чтобы создать
перенаправление.
Редирект при помощи PHP - подойдет в том случае, если вы разбираетесь в PHP и знаете структуру своего сайта. Этот вариант подойдет вам, если ваш сайт написан не на CMS. В ином случае лучше используйте редирект через htaccess.
Редирект HTML - если у вас простой HTML сайт и вам нужно сделать перенаправление для одной страницы - это самый простой вариант. Сделать перенаправление для всего сайта этим способом будет трудозатратно, особенно если у вас на сайте больше 10 страниц.
Редирект при помощи JavaScript - этот способ подойдет также в том случае, если у вас простой сайт, либо если нужно сделать редирект для одной - двух страниц, либо для всего сайта в целом.
Редирект при помощи.htaccess файла
Инструкции, которые вы увидите ниже, нужно прописать в файл.htaccess в самое начало.
Redirect / http://new-site.ru/
В этом примере, перенаправление будет происходить на сайт new-site.ru
Redirect /page-1.html /page-2.html
В этом примере,
перенаправление будет происходить со страницы page-1.html на страницу page-2.html.
Обе страницы должны располагаться на одном домене.
Этот вариант подходит для
замены старых страниц сайта на новые.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example\.ru
RewriteRule ^(.*)$ http://example.ru/$1
В этом примере, посетители будут перенаправляться с http://www.example.ru на http://example.ru.
Redirect 301 /blog/page-1.html http://example.com/page-2.htm
В этом примере, посетители будут перенаправляться со страницы blog/page-1.html на example.com/page-2.htm .
ErrorDocument 404 /index.html
Пропишите эту строку в.htaccess файле, и тогда все посетители, которым встретится ошибка 404, будут перенаправлены на index.html .
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
PHP редирект
В PHP редирект делается так: сервер отправляет заголовки headers браузеру посетителя,
и тот переходит по нужному адресу автоматически.
Стоит отметить важный момент,
отправлять заголовки можно только до вывода другой
информации. То есть они должны отправляться до вывода любой другой информации через
echo
и до отправки кук.
В этом примере, перенаправление будет происходить на сайт http://example.com
Здесь перенаправление будет происходить на http://example.com/page.html
Здесь если посетитель сайта зайдет на страницу blog/post-1.html то он будет перенаправлен на http://example.com/page.html
HTML редирект
Чтобы сделать редирект через HTML, нужно добавить на каждую страницу где он планируется
специальный мета тег. Мета тег прописывается внутри тега
.
На больших сайтах этот метод не удобен, и рекомендуется использовать
редирект через .
В этом примере, перенаправление будет происходить на сайт https://сайт с задержкой в 5 секунд. Если установить значение задержки вместо 5 в 0, то посетитель будет перенаправляться на другой сайт моментально.
Недавно показывал как можно сделать переадресацию на htaccess теперь предлагаю вариант php переадресации () - как альтернативу 301 редиректу сервера. Зачем это нужно? - а за тем что не везде и не всегда получается на htaccess сделать правильную переадресацию.
И так, для начала нужно написать условие при каком будет срабатывать переадресация. У wordpress пишем код в файл header.php или в любой другой файл вашей темы выше функции get_header() в самое начало, до тегов хтмл. Код будет такого плана:
Если вам нужна php переадресация на wordpress в локальном месте, например хочем перенаправить из одной категории на главную страницу, можно записать выше приведенный код в любой файл темы который срабатывает на вывод категории (например category.php) выше кода вызова шапки get_header();
Как работает php переадресация в строке ответаПри пхп переадресации мы получаем точно такой ответ сервера, как будто мы сделали это через конфиг сервера, с поправкой на то скорость обработки будет немного ниже. Скриншот ответа сервера в Хроме:
Все тот же редирект 301 только реализован на ПХП.
Зачем использовать 301 редирект php Бывает ситуация, когда нужно зафиксить всю категорию, таксономию, метку ВП или заблокировать Custum Post Type не удаляя их. Например, мы перенесли контент, но сылки уже проиндексированные в этом случае нам поможет 301 редирект php, который мы сможем вставить в любое место. Конечно, такой редирект уступает по производительности редиректу с настроек сервера, но писать большушую маску под таксономию или CPT очень большой геморой. Если не срабатывает 301 редирект php ?Редирект на ПХП может не срабатывать по причине не срабатывания условия, так что для начала нужно:
Благодаря возможности перенаправлять сайт из PHP мы можем реализовать механизм редиректов там где htaccess не справляется, точнее мы не можем справится 🙂
Если у вас остались вопросы пишите их в комментариях или мне на .
Всем привет! В этой статье хочу наглядно показать как можно сделать редирект ваших пользователей используя для этого PHP, Apache или Nginx .
Для начала стоит пару слов уделить определению того что такое редирект.
Редирект
– это автоматическое (принудительное) перенаправление посетителей сайта с одной страницы на другую. Для того чтобы при перенаправлении пользователя он понимал куда и почему его перенаправили то нужно указывать состояние для веб страницы. О состоянии страницы говорит код статуса HTTP
.
Нас интересуют следующие статус-коды редиректов:
- 300 — Multiple Choices (несколько вариантов на выбор давая возможность сделать выбор пользователю).
- 301 — Moved Permanently (запрошенный документ перемещен на новый URI).
- 302 — Moved Temporarily (временный редирект по другому URI).
- 303 — See Other (затребованный ресурс можно найти по другому адресу).
- 304 — Not Modified (содержимое не изменялось — это могут быть рисунки, таблицы стилей и т.п.).
- 305 — Use Proxy (доступ должен осуществляться через прокси-сервер).
- 306 — Unused (не используется, зарезервирован).
Возможно, самым простым способом для перенаправления на другой адрес будет мета-тег с refresh . Мы можем разместить этот мета-тэг внутри в верхней части любой HTML -страницы, к примеру, так:
Атрибут «content » – это задержка перед тем, как браузер перенаправляет на новую страницу, наше значение 0 секунд. Обратите внимание, что мы не должны устанавливать HTTP-код, но важно дважды проверить странное открытие и закрытие кавычек.
PHP редирект