Как сделать редирект другую страницу. Редирект URL-адресов с помощью PHP

25.05.2019

Часто в веб разработке требуется делать переадресации с одной страницы (например, устаревшей) на другую. При этом переадресация может выполняться разными методами - как с потерей веса страницы, так и без нее. Но об этом подробнее.

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

Переадресацию страниц можно делать разными методами. Рассмотрим основные.

301 редирект через.htaccess

В корне вашего сайта есть файл (если его нет - создайте) под названием.htaccess. Откройте его на редактирование и используйте один из следующих способов.

Redirect permanent и Redirect 301 - легко делает 301 редирект с одной страницы на другую (или сайта). Первой идет старая ссылка сайта (заметьте - без домена), второй - ссылка на новую страницу (которая может быть этим же сайтом или вообще новым).

Примеры:
Redirect permanent /staraya-stranica.php http://newsait.ru/novaya-stranica.php
(здесь просто переадресуем с устаревшей страницы на новую)

Redirect 301 / http://newsait.ru/
(здесь / означает, что все начиная с главной страницы сайта и всех его подстраниц (поддиректорий) будет переадресовываться на новый домен; т.е. фактически переадресация с оного домена на другой.)

RewriteRule редирект - более сложный редирект, чем предыдущие варианты. Требует для правильной работы подключение модуля mod_rewrite на хостинге (обычно всегда включен). Часто этот метод используют для переадресации страниц с www на такие же без www и обратно. Рассмотрим их:

Редирект домена с www на не-www
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*)$ http://%1/$1

Редирект с не-www на домен с www
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*)
RewriteRule ^(.*)$ http://www.%1/$1

301 редирект с домена на домен и исключением для ссылки /market/vm2_market.xml. Т.е. все запросы (кроме /market/vm2_market.xml), со старого домена на новый будут выполняться.

RewriteEngine on

301 Все запросы (кроме /market/vm2_market.xml и ссылки /texts (и всеми ее "подссылками")), со старого домена на новый будут выполняться. Также здесь работает правило переадресации определенной подссылки (RedirectMatch 301)

RewriteEngine on
RedirectMatch 301 ^/texts/data/msg/(.*)\.png$ http://olddomen.ru/texts/data/rimage/msg.php?id=$1
RewriteCond %{REQUEST_URI} !^/texts*
RewriteCond %{REQUEST_URI} !^/market/vm2_market.xml$
RewriteRule ^(.*)$ http://newdomen.ru/$1

RedirectMatch 301 - еще один хороший метод редиректа, он похож на Redirect 301, но имеет больший функционал. А именно, с его помощью можно делать редиректы на основе регулярных выражений.

Примеры:
RedirectMatch 301 ^/olddirectory/ http://сайт/newdirectory/
(Здесь переадресует всю директорию на новую)

RedirectMatch 301 ^(.*)$ http://сайт
(Переадресует все страницы со старого домена на новый с помощью 301 редиректа (вес также передается на новый сайт))

RedirectMatch 301 (.*)\..php
(Смена страниц с html расширения на php расширение)

RedirectMatch 301 /dirA/(.*)\..php
(Запускает перенаправление из директории dirA в директорию dirB только при обращении к PHP скриптам.
.php -> http://сайт/dirB/page.php - сработает
http://сайт/dirB/page.html - не сработает)

Синтаксис для регулярных выражений
. - Точка заменяет произвольный символ.
- обозначает перечень символов, совпадающих с буквами a, b, или с.
[^abc] - перечень символов, которые не входят в указанных диапазон. Совпадёт с любым символом, кроме a, b, или с.
* - означает, что предшествующий символ может повторяться (0 или более раз).
* - команда найдёт идущие подряд символы из заданного набора.
[^abc]* - с точностью до наоборот.

.* - заменяет абсолютно любой набор символов. ".*" - найдёт все подстроки между кавычками.
^ - начало строки (в том случае, если используется в начале выражения).
$ - обозначает конец строки.

\w - буква, цифра или подчёркивание _.
\d - заменяет любую цифру.
\D - заменяет любой символ, но не цифру.
- заменяет любую цифру.
- любая буква от a до z (весь латинский набор символов) в нижнем регистре.
- любая буква от A до Z в ВЕРХНЕМ регистре.
- любая буква от a до Z в любом регистре.
- то же самое.

Спецсимволы, используемые в правилах и их значения.
^ - спецсимвол начала строки;
$ - спецсимвол конца строки;
! - спецсимвол отрицания;
. - точка, заменяет любой символ, но только один;
() - группировка;
\ - «экранирующий» слеш, следующий символ после него считается обычным, а не спецсимволом.

Модификаторы используются после обычных, спецсимволов или их групп и позволяют расширить возможности шаблонов для срабатывания правил.
? - символ повторяется 0 или 1 раз.
+ - повторяется от 1 до 65536 раз.
* - повторяется от 0 до 65536 раз.

Флаги, задают доп. опции для используемого правила. Перечисляются в квадратных скобках через запятую, скажем или .
NC - флаг NoCase, отключающий проверку регистра символов при срабатывании правила.
R - флаг Redirect, производит процесс остановки изменения URL-адреса и возвращает результат. Чаще всего используется значение R=301, но возможны и другие для временных перенаправлений (302, MOVED TEMPORARY).
L - флаг Last, останавливает формирования URL-адреса и строка считается окончательной.

Редирект через php. Если у вас обычная php страница, которую надо переадресовать на новый адрес, то можно обойтись без.htaccess

Пример:

Редирект через javascript. Также переадресацию можно сделать и на обычном javascript (правда без передачи веса страницы).

Пример:
window.location="http://сайт/category/";
(обычная переадресация на страницу сайта)
alert("Сейчас вы будете переадресованы!"); window.location="http://сайт/category/";
(обычная переадресация на страницу сайта перед которой пользователю выводится сообщение)

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

Понятие редиректа

Ответить на этот вопрос несложно всем, кто более или менее владеет английским языком. Дословно в переводе с английского слово "редирект" означает "переориентировать" или "переадресовать". Для владельцев сайтов и программистов редирект - это простой и эффективный способ подмены страницы сайта на другую, отличную от запрошенной изначально. Это означает, что посетитель набирает в адресной строке один адрес, а попадает на совершенно другой ресурс. Нередко бывает, что редирект не соответствует запросам юзера.

Для чего он требуется?
  • Замена адреса сайта на более красивый. Если просто переехать с одного сайта на другой, можно потерять многих посетителей. Именно благодаря редиректу, происходит переброс пользователей на новый сайт, даже если они обращаются к старому адресу. Таким образом, редирект страницы позволяет сохранить клиентов без дополнительных затрат средств и времени при замене адреса сайта.
  • Так называемая склейка доменов. Посетители могут вводить в поисковую строку один и тот же адрес двумя способами: используя тройное W или нет. В обоих случаях юзер попадает на один и тот же сайт, именно из-за настроенной переадресации.
  • Временная переадресация используется в случаях, когда сайт перенесли на новый домен, однако он пока не готов работать в полную силу.
  • Навязывание ненужной рекламы.
  • Увеличение посещений того или иного Интернет-ресурса. Такой редирект, который перенаправляет пользователя вместо искомого сайта на другой (например, рекламный), используется для накрутки счетчиков.
  • Так называемые реферальные ссылки.
  • Типы

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

    • 300 — выбор одного варианта из нескольких. Чаще всего используется автоматически для выбора нужного языка или кодировки.
    • 301 — перемещение навсегда. Как раз такой вид переадресации используется при переезде сайта.
    • 302 — временный редирект. Используется для временной переадресации юзеров и поисковых систем с одного адреса на другой.
    • 303 — ресурс, который запрашиваете, находится по другому адресу. Следует отметить, что такой редирект используется поисковыми системами: когда результатом поиска является всего одна страница, юзера сразу перенаправляют на нее.
    • 305 - используйте прокси. Доступ к документу с таким типом редиректа доступен только с использованием прокси-сервера.
    • 307 - еще один временный редирект.

    Редирект с кодом 304 указывает на то, что наполнение страницы осталось прежним, а 306 код припасен на возможные будущие нужды.

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

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

    Переадресацию можно настроить несколькими способами. Рассмотрим каждый из них отдельно.

  • Настройка переадресации через htaccess. Это, пожалуй, самый простой и распространенный способ организовать перенаправление с одного сайта (или страницы) на другой. Чтобы воспользоваться этим методом, необходимо в папке сайта создать файл и назвать его.htaccess, имя файла должно начинаться именно с точки. У пользователей CMS и Joomla такой файл уже имеется, создавать его специально нет необходимости.
  • В том случае, когда Интернет-ресурс написан не на CMS, нелишним будет знать, как сделать редирект через PHP . Но для этого нужно разбираться в структуре вашего Интернет-ресурса.
  • Редирект HTML используется в случае, когда необходимо сделать переадресацию одной или нескольких статей сайта, написанного на HTML. Настройка редиректа всего сайта этим способом займет длительное время.
  • Редирект при помощи JavaScript - простой и эффективный способ для владельцев простых сайтов или тех, кому требуется настроить переадресацию одной или нескольких страниц либо полностью всего ресурса.
  • Примеры

    Редирект сайта или страницы через htaccess прописывается следующим образом:

    • Redirect /page-А.html /page-В.html - перенаправление со страницы А на страницу В.
    • Redirect / http://site2.ru/ - переадресация на сайт2.

    Чтобы "склеить" домены, в файл.htaccess, необходимо добавить следующие строки:

    • RewriteEngine on
    • RewriteCond %{HTTP_HOST} ^www.example\.ru
    • RewriteRule ^(.*)$ http://example.ru/$1

    Редирект на php будет выглядеть так:

    • - перенаправление на сайт А;
    • - редирект на страницу А.

    Учитывайте, используя HTML-редирект , что такой код нужно добавлять с помощью метатега:

    • Перенаправление будет происходить на сайт А. В данном метатеге можно регулировать время перенаправления. Если установить значение, отличное от нуля, то редирект будет происходить через указанное время.
    • - перемещение на страницу А сайта А произойдет через 10 секунд.

    Через JavaScript . Перенаправление посетителя на сайт А:

    • location="http://siteA.ru"

    Разобраться в том, что такое редирект, не составит труда уверенным пользователям.

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

    Что такое 301 редирект и зачем он нужен?

    301 редирект призван помочь вебмастерам переадресовать пользователей с одного URL, который изначально был в адресной строке браузера, на совершенно иной. С точки зрения поисковой оптимизации, 301 Moved Permanently - это постоянный редирект, который помогает переместить до 99% ссылочного веса на новый URL, а старый «пометить» в качестве устаревшего. То есть благодаря этому удастся сохранить позиции в поисковых системах, а если просто изменить адрес URL, не делаля редирект, то для Яндекса и Гугла это будет новой страницей, которая будет ранжироваться без связки с предыдущей историей.

    Есть несколько вариантов, когда нужно воспользоваться этим редиректом:

    • при совершении склейки доменов;
    • для переезда сайта на новый адрес, например, в случае снижения трафика вследствие попадания вашего ресурса под фильтры поисковиков. 301 редирект не позволит тем, кто добавил ваш сайт в закладки, потерять его из виду;
    • чтобы увеличить показатели тИЦ, PR, трафик из ПС на основном сайте. В этом случае понадобится приобрести домен, который обладает неплохими показателями и настроить редирект на тот ресурс, который нуждается в улучшении данных параметров;
    • при смене адреса конкретной страницы для сохранения высоких позиций в ПС (например, это может быть актуально при переезде сайта из одной CMS в другую);
    • и др.
    Как сделать 301 редирект?

    Вариантов решения задачи по настройке 301 редиректа есть несколько. Каким из них воспользоваться - зависит от технических возможностей хостинга . Но у современных хостеров подобных проблем обычно не возникает, а если и появляются, то решается быстро через тех поддрежку. Вот парочка основных ситуаций простого редиректа, с которыми вы можете столкнуться. Для этого понадобиться создать файл с именем.htaccess (если его нет), а затем внести в него нужный код редиректа. Если создать его просто на рабочем столе не получается, то попробуйте сделать это через программу Total Commander, либо FileZilla просто переименовав любой ненужный документ.

    Итак, вам нужно перенаправить пользователей на другой сайт. Это будет выглядеть следующим образом:

    Redirect 301 / http://site.ru

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

    Redirect 301 /старая-страница.html http://новый-домен.ru/новая-страница.html

    RedirectPermanent /старая-страница. html http://новый-домен.ru/новая-страница.html

    Как склеить домен с www с вариантом без?

    В данный момент применение www в названии сайтов считается устаревшим. Однако, такой вариант встречается нередко. Если это не покупка готового сайта , то при создании нового ресурса лучше указывать везде без www. При склеивании доменов объединяются все их самые важные параметры, такие как тИЦ, PR и посещалка. К тому же это поможет оптимизировать ресурс, и избежать ситуации, когда ПС отражение сайта с www принимают за «самозванца» с «ворованным» контентом.

    Код для склеивания домена с использованием www на домен без www выглядит так:

    RewriteEngine on RewriteCond %{HTTP_HOST} ^www.site.ru$ RewriteRule ^(.*)$ http://site.ru/$1

    При этом значение RewriteEngine on/off является специализированной директивой, служащей для подключения либо прекращения доступа к коду самого файла. А доступ происходит посредством модуля mod_rewrite. RewriteCond - директива, используемая для формирования условий по правилам преобразования. А RewriteRule - предписание, отвечающее за производимые преобразования, в конкретной ситуации - редирект 301.

    301 редирект при переезде на HTTPS

    Современный тренд - перенос сайтов на защищенный протокол HTTPS. При этом настройка переадресации со страниц с HTTP на HTTPS является ключевым этапом. Делается это следующим образом в файле .htaccess.

    RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://site.ru/$1

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

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

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

    Также существует несколько ситуаций, когда использование 301 редиректа будет ошибочным. Так, лучше не применять многоходовый редирект, если его внедрение займет слишком продолжительное время. Или, например, при наличии контента, который дублируется, и по ряду причин нужно сохранить обе страницы для пользователей. Если страница и ее содержимое не релевантны, то от редиректа тоже стоит отказаться. Ошибкой будет настройка редиректа на некорректно работающую страницу (страница должна быть с 200 или 404 ответом сервера). И, наконец, неверным будет редирект файла robots.txt .

    Другие виды редиректов

    Опытные вебмастеры помимо самого популярного 301 редиректа используют и некоторые другие: от 300-го по 307-й. К примеру, 302 и 307 - это временный редирект, 305 - доступ исключительно посредством прокси и т. д. Также довольно востребованным типом редиректов можно назвать Meta Refresh. Он выполняется не на уровне сервера, а на уровне страницы. Однако, такой редирект эксперты рекомендуют применять как можно реже. Это обосновано тем, что к ним зачастую прибегают дорвейщики и спамеры. К тому же применение этого редиректа практически не дает возможности для передачи ссылочного веса.

    Если вы хотите изменить URL-адрес страницы, отображаемый в результатах поиска, рекомендуется использовать переадресацию 301 (301 Permanent Redirect), выполняемую сервером. Это самый лучший способ обеспечить переход пользователей и поисковых систем на нужную страницу.

    Код статуса 301 означает, что запрашиваемая страница окончательно перемещена в новое местоположение.

    На самом деле существует несколько редиректов. О том как сделать 301 редирект можно посмотреть на инфографике.

    В каких случаях использовать редирект 301?

    Использовать переадресацию 301 особенно удобно в следующих случаях:

  • При смене домена. Вы переместили свой сайт в другой домен и хотите, чтобы казалось, будто перехода и вовсе не было.
  • Для передачи новому домену Page Rank и тИЦ.
  • Для сохранения поискового трафика.
  • Пользователи могут получить доступ к сайту, используя несколько различных URL-адресов. Например, попасть на страницу можно несколькими способами: //site.ru/sub , //sub.site.ru или //www.site.ru . Бывает удобно выбрать один из этих URL-адресов в качестве канонического (основного) и использовать переадресацию 301 для перенаправления на него трафика с других URL. Для настройки можно использовать «Инструменты для веб-мастеров».
  • При объединении двух сайтов требуется, чтобы все ссылки на устаревшие страницы указывали на страницы, действующие в данный момент.
  • При переносе страницы сайта в новое место.
  • Для склейки имени сайта с префиксом www и без него.
  • Статья по теме: Корректный переезд сайта на протокол https

    301-ая ошибка (301 Permament Redirect), возвращаемая при обращении к определенному адресу страницы, означает, что сайт был на постоянной основе перенесен на новый адрес, также указанный в HTTP заголовке. Как пользователи, зашедшие через браузер, так и поисковые боты будут перенаправляться по новому адресу, при этом, для поисковиков все свойства старого адреса (страницы) будут переданы новому URL . При 301 редиректе произойдет склейка старого и нового адресов: параметры вроде PageRank и тИЦ, а также вес страницы и ссылочный вес старого адреса будет передан новому URL .

    Редирект с номером ошибки 301 (moved permanently) это наилучший способ сохранить рейтинг сайта в поисковых системах при переносе его на новый домен или смене системы управления контентом. Переадресацию можно выполнить несколькими способами, в зависимости от установленного программного обеспечения.

    301 редирект в.htaccess

    При использовании сервера Apache, переадресацию можно просто выполнить с помощью файла.htaccess , однако, при этом, не забыть включить модули mod_alias (для поддержки директив Redirect , RedirectPermanent и RedirectMatch) и/или mod_rewrite (для использования реврайта) в php.ini .

    Для этого поместите в корне папке вашего сайта файл.htaccess. Редирект с помощью директивы Redirect или RedirectPermanent модуля mod_alias Redirect 301 /old-page.html //new-domain.ru/new-page.html

    Redirect permanent /old-page.html //new-domain.ru/new-page.html

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

    RedirectPermanent /old-url.html //new-site.ru/new-url.html

    Редирект с помощью директивы RedirectMatch

    Этот редирект подобен предыдущему, за исключением того, что можно задавать регулярное выражение для старых URL адресов. Допустим, при смене движка с PHP на ASP, можно старые адреса перенаправить следующим образом:

    RedirectMatch /(.*).php$ /$1.aspx

    Редирект с помощью директивы RewriteRule модуля mod_rewrite

    Для использования директивы RewriteRule необходимо удостовериться, что в httpd.conf подключен модуль mod_rewrite , а также влючена опция FollowSymLinks . Использование реврайт модуля дает много возможностей для перенаправления страниц на новые адреса.

    Статья

    В материале ниже я опишу шесть способов как сделать редирект страницы.

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

    Данный материал не представляет собой исчерпывающий набор редиректов — это всего лишь несколько наиболее популярных видов и способов редиректа.

    Для чего нужен редирект? Основная функция для перенаправление посетителей с одного сайта на другой (с одной страницы на другую).

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

    Суть работы редиректа следующая — пользователь набирает один адрес сайта, нажимает ENTER, и попадает на совершенно другой сайт.

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

  • header-редирект средствами PHP — 301, 302-й редирект (разница между ними).
  • Редирект средствами .htaccess (и модуля mod_rewrite, который используется при этом).
  • Простейший JavaScript — редирект с помощью doсument.location
  • META-REFRESH — редирект с помощью meta-тэгов
  • JavaScript-редирект с задержкой через setTimeout (например для учёта Метрикой).
  • Iframe/Frameset — «псевдо» редирект через фреймы (например для прохождения модерации в Яндекс.Директе).
  • Редирект — перенаправление

    Как сделать редирект страницы. Способ 1 — PHP-редирект.

    Этот редирект срабатывает без загрузки странички.
    Страничка на которую идёт редирект — получает оригинальный REFERER (т.е. таким образом не скрыть откуда был редирект).

    Данный редирект например можно использовать для Ютуба. Ютуб как известно можно связать только с одним сайтом, соответственно на чужой сайт вы не сможете сделать ссылку. Для обхода этого ограничения создаете отдельный подкаталог на своем домене, в него кладете index.phd с прописанным кодом редиректа.

    Редирект нужно оформлять в файл.php и ОБЯЗАТЕЛЬНО до вывода любых символов. То есть если будет лишний пробел или символ, который выводится на экран (например до знака