Перенаправления с помощью .htaccess, PHP, HTML и JavaScript

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

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

Редиректы выполняются с помощью .htaccess, PHP скрипт, HTML мета-тегов и JavaScript.

Перенаправление доменов сайта

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

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

Кроме этого перенаправление позволяет одинаковому контенту быть доступным по различным веб-адресам. Все альтернативные адреса перенаправляются в сторону приоритетного домена сайта:

csm_domain-weiterleiten-c_37fa5b36ef

Типы редиректов

Различают клиентские и серверные HTML meta redirect. В случае с серверными перенаправлениями происходит передача кодов состояния HTTP пользовательским агентам (браузерам и поисковым роботам).

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

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

Серверные редиректы

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

Ниже приведены актуальные коды состояния HTTP 301 и 302:

  • redirect 301 HTML – перемещен навсегда: запрашиваемый ресурс теперь постоянно доступен по новому URL. Старый URL с этого момента становится недействительным;
  • 302 – перемещен временно: запрашиваемый ресурс доступен по новому URL. При этом исходный URL по-прежнему сохраняет свою актуальность.

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

Перенаправление через .htaccess

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

После того, как файл .htaccess со следующим кодом помещается в основные каталоги, запросы на исходный домен перенаправляются серверной стороной на домен www.example.com '':

.htaccess перенаправление на новый домен
redirect 301 / http://www.example.com/

Строка кода начинается с redirect 301 HTML и определяет код состояния HTTP, который будет передан сервером. Далее следует путь к контенту, который должен быть перенаправлен. В данном случае будет перенаправлено все содержимое. В заключении целевой URL перенаправляется на URL пользовательского агента: 'http://www.example.com'.

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

.htaccess перенаправление из подкаталога на другой URL

Вот как выглядит постоянное перенаправление на сервере Apache с активным модулем mod_rewrite:

RewriteEngine On
RewriteRule ^directory/example-document.html$ http://www.example.com/example.html [L,R=301]

В первой строке кода модуль mod_rewrite сервера Apache активируется с помощью команды 'RewriteEngine On'. После этого указывается "RewriteRule" с путем к файлу перенаправления и адресом назначения. Символы ^ и $ обозначают начало и конец пути, а L означает последнее правило для соответствующего запроса. R = 301 пересылает статус HTTP 301.

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

Перенаправления с помощью PHP

HTML redirect на другую страницу может также быть выполнен PHP скриптом (например, в index.php). Следующий код отображает постоянное перенаправление к целевому URL 'www.example.com':

<?php
header("Status: 301 Moved Permanently");
header("Location: http://www.beispiel.de");
exit;
?>

При передаче через PHP скрипт код состояния HTTP определяется с помощью функции "header" во второй строке кода. В этом примере должен быть выполнен постоянный 301 редирект. Учитывая, что серверные перенаправления обычно выполняются на временной основе, то для постоянного редиректа нужно явно указать код состояния 301. Адрес назначения перенаправления также прописан в 'header'.

В примере перенаправление происходит на 'http://www.example.com'. Функция 'exit' в четвертой строке кода заканчивает сценарий и препятствует выполнению следующей строки. Чтобы редиректы работали через PHP скрипт, блок кода должен быть расположен в начале HTML страницы. Это препятствует передаче сервером содержимого HTML на страницу перенаправления.

Клиентские редиректы

Если выполнение перенаправления на стороне сервера невозможно по техническим причинам, то можно использовать клиентское решение. Для этого применяется HTML метатег "refresh" и JavaScript. Недостатком перенаправления на стороне клиента является то, что серверы не передают коды состояния HTTP запрашивающим браузерам или поисковым роботам.

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

Redirect HTML index на стороне клиента оказывают негативное влияние на поисковый индекс. С клиентскими редиректами 301 не происходит явного исключения из индексации через код состояния HTTP. Это может привести к перенаправлению доменов, конкурирующих с доменами назначения, когда речь заходит о поисковых запросах, связанных с рейтингом. В отличие от серверных редиректов, которые остаются невидимыми для пользователей, клиентские всегда сопровождаются задержками.

Переадресация с помощью HTML метатега refresh

HTML перенаправления реализуются через метатеги с атрибутом ‘http-equiv’. Для этого нужен простой HTML-файл и соответствующий тег в заголовке для создания перенаправления. Чтобы посетители получали информацию о редиректе, в HTML-документе должно быть установлено соответствующее уведомление: "Пожалуйста, подождите. Вы будете перенаправлены ... '. Простое перенаправление с помощью refresh выглядит следующим образом:

<meta http-equiv="refresh" content="10; url=http://www.example.com/">

Клиенту будет предложено перенаправление на новую страницу через метатег http-equiv = "refresh". То, как это происходит, определяется в атрибуте ‘content’. Приведенный выше пример перенаправляет пользователей на домен 'www.example.com' через десять секунд.

Переадресация с помощью JavaScript

JavaScript предлагает простую возможность HTML redirect домена на стороне клиента. Но JavaScript поддерживается не всеми браузерами из-за соображений безопасности. Использование данного решения также может создать проблемы для поисковых роботов и пользователей с активными дополнениями NoScript. Вот как выглядит код перенаправления с помощью JavaScript:

<script> 
<!--
window.location.replace('http://www.example.com'); 
//-->
</script>

Самое главное здесь это третья строка кода. Объект 'window.location' используется, чтобы сделать ссылку на текущий адрес сайта. Команда 'replace' инструктирует браузер направить пользователя к домену назначения ('www.example.com').

Перевод статьи “Domain redirects via .htaccess, PHP, HTML, and JavaScript” был подготовлен дружной командой проекта Сайтостроение от А до Я.

30 сентября 2016 в 11:38
Вам понравился сайт или конкретно эта страница? Поделитесь ею со своими друзьями, нажав на одну из кнопок соцсетей слева или снизу. Желаете быть в курсе последних обновлений сайта — подпишитесь удобным для вас образом:
или поддержите нас, нажав на кнопку "Мне нравится"!
Материалы по теме
Обсуждения
{"url":"http://www.fastvps.ru/", "src":"/images/advbanners/fastvps.png", "alt":"Хостинг Fastvps.ru. Наш выбор!"}
Заработок