301 редирект в файле htaccess — детальная инструкция по применению
Содержание:
- Как понять, что на сайте скрытая переадресация для мобильных устройств
- Способ 2. htaccess-редирект
- Популярные разновидности редиректов
- Основные виды редиректов
- Пример: объясняем на пальцах
- Сложные редиректы
- Способ 6. Псевдоредирект через IFRAME или FRAMESET.
- Виды редиректов по назначению
- Что делать, если обнаружили скрытый редирект на сайте
- Правила Redirect, RewriteRule и RewriteCond
- Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы
- Rewriting a URL
- Настройка 301 редиректа со страницы на страницу
- HTML перенаправления
- Наиболее популярные правила
- Как проверить редирект страницы
- Как настроить редирект на www (или без www)
Как понять, что на сайте скрытая переадресация для мобильных устройств
Есть несколько сигналов, по которым можно догадаться, что что-то не так с мобильным просмотром.
Послушать жалобы пользователей
Кто-то из тех пользователей, которые не смогли попасть на сайт с мобильного, найдут вас, например, в соцсетях и пожалуются. Прислушайтесь, спросите, с какого устройства посещали сайт, с мобильного интернета или WiFi, куда их в итоге перебросило.
Проверить самому — открыть сайт на смартфоне
Попробуйте сами перейти на сайт из результатов выдачи. Используйте свой смартфон и попросите знакомых.
Можно использовать эмуляторы в десктопных браузерах — Firefox, Safari, Chrome. Выбор мобильного устройства в интерфейсе разработчика в Google Chrome:
Просмотр мобильной версии
Заглянуть в Яндекс.Вебмастер и Google Search Console
Оповещение о взломе сайта и советы появятся в разделе «Проблемы безопасности» Google Search Console.
В Яндекс.Вебмастере есть аналогичная страница «Безопасность и нарушения» в разделе «Диагностика» со списком зараженных страниц, датами проверок и оценками антивируса.
Проверить сайт в сервисах
У PR-CY есть проверка вирусов онлайн в бесплатном инструменте:
Онлайн-проверка сайта на вирусы
Если вы хотите провести более полную проверку, используйте сервис Анализа сайта. Он проверит технические параметры, отношение поисковиков, оптимизацию главной и ошибки на внутренних страницах. Проверка на вирусы в него тоже встроена:
Проверка на санкции и вирусы в Анализе сайта
Посмотреть сайт в выдаче
Часто у взломанных сайтов появляется предупреждение в результатах поиска. Если вы видите похожую плашку у своего сайта, значит его взломали и поисковик это обнаружил.
Образец оповещения о взломе сайта
При переходе на такой сайт может появиться страница с информацией о взломе, блокирующая переход.
Посмотреть мобильный трафик в аналитике
Если мобильных пользователей будут перехватывать и отправлять на сторонний сайт, у вашего сайта будет сильная просадка по мобильному трафику. В Google Аналитике и Яндекс.Вебмастере проверьте динамику трафика и времени, проведенного мобильными пользователями на сайте.
В Google Analytics можно настроить специальные оповещения, чтобы вам на почту пришло письмо, если обнаружится странная ситуация с трафиком
Как настроить оповещение о существенном спаде трафика в Google Analytics:
-
Зайдите в Специальные отчеты — Специальные оповещения
-
Нажмите на Управление оповещений
-
Заведите новое оповещение: дайте ему удобное вам название, выберите регулярность уведомлений и укажите почту, на которую они будут приходить.
- Настройте условия оповещения:
-
относится к мобильным устройствам и планшетам;
-
оповестить, если «средняя длительность сеанса»;
-
условие — «точно соответствует», ценность — да;
-
второе условие — «уменьшение процентного показателя более чем на», ценность — 50%, по сравнению с «этот день на прошлой неделе».
-
Сохраните оповещения.
-
Выбор Управления оповещений
Если трафик просел, это не обязательно значит, что на сайте настроена скрытая переадресация для мобильных. Но такую причину можно рассматривать как одну из версий.
Способ 2. htaccess-редирект
Этот редирект делается простым помещением файла .htaccess в папку где нужно сделать редирект.
Например, редирект любого url (из папки где .htaccess) на нужный адрес, вот содержимое .htaccess:
RewriteEngine On RewriteRule (.*) //leonov-do.ru/ |
Возможны более сложные редиректы, но такой вариант по своей сути — такой же как и header-редирект (если указывается внешний URL). Возможны вариант переадресации файла — вместо (.*) указать к примеру имя go — будет редиректить адрес go и т.п. Можно указать в одном файле несколько строчек RewriteRule подряд с разными правилами — тогда не нужно писать каждый раз RewriteEngine On.
Популярные разновидности редиректов
Чтобы понять, как правильно переадресовывать страницы, важно разобраться, какие виды редиректов чаще всего используются, как они называются и чем отличаются друг от друга
- 301-й редирект. Под этим кодом скрывается постоянная переадресация, при которой запрашиваемый url устаревает и контент размещается по новому адресу. Ссылочный вес практически полностью перемещается на другой документ, и происходит склейка метрик, которые были накоплены.
- 302-й редирект. Такой редирект имеет временный характер, и при его использовании метрики не склеиваются. В зависимости от версии HTTP ответ сервера будет иметь тот или иной статус.
- Moved Temporarily (то есть «перемещено временно») для HTTP 1.0 говорит о временном перемещении публикации на другой адрес.
- Ответ при версии 1.1 свидетельствует о том, что найти документ не удалось, и меняется на Found («Найдено»).
- 307-й редирект. Он также имеет временный характер. Используется в редких случаях, когда контент переезжает на кратковременный период, например при необходимости провести техобслуживание.
- Meta Refresh. Это обновления, происходящие не на сервере, а на странице. Самая распространенная ситуация, в которой можно встретить такой код, это отсчет времени, сопровождающийся сообщением: «Если через 5 секунд переход не состоялся, нажмите сюда». Специалисты по SEO не рекомендуют использовать этот статус, так как велик риск, что из-за него ухудшатся поведенческие факторы и позиции страницы в органической поисковой выдаче.
Выбирая вид редиректа, важно учитывать, что постоянный не требуется, когда планируется краткосрочный переезд или причиной для изменений стали сложности со старым доменом. Попав под фильтр или в бан, вы перетянете на новый url свои прежние проблемы
Основные виды редиректов
Всего существует 10 различных кодов, которые осуществляют перенаправление, но в своей работе в 98% случаев вы будете встречать 301, 302 и 304, о них ниже.
301 Moved Permanently
Запрашиваемый документ перемещён на другой URL-адрес навсегда. Это код ответа сервера, который вызывает больше всего вопросов у начинающих.
На самом деле ответ прост: все страницы, с которых пользователей нужно навсегда переправить на другую страницу (дубли, удалённые страницы, зеркала и всякие штучки), должны отвечать этим кодом.
После краулинга таких страниц поисковые системы рано или поздно «склеят» их с целевой страницей редиректа и передадут вес.
Старайтесь убирать внутри сайта все ссылки на страницы, которые отдают 301 код ответа, и проставьте сразу целевую страницу редиректа.
Google утверждает, что для него все редиректы равнозначны, но ведь есть ещё другие поисковые системы, поэтому ставим всегда 301.
302 Found
Уведомляет клиента, что страница найдена и временно расположена по другому адресу.
Поисковые системы обычно не удаляют её из индекса. Ранее этот код ответа использовался во время доработок на сайте или случаев, когда товара временно нет в наличии, но страница приносит трафик, поэтому есть смысл перенаправить пользователей на страницу каталога или похожего товара.
304 Not Modified
На самом деле, это не совсем редирект, это «уведомление» о том, что страница не изменялась с предыдущего посещения.
Код 304 Google использует и это положительно влияет на краулинговый бюджет. Яндекс такой код не использует.
При обращении, если GoogleBot видит 304 код ответа сервера – он не скачивает страницу.
Пример: объясняем на пальцах
Как с помощью 301 редиректа сделать так, чтобы по запросу site.ru/category/art1/zapis/ в строке адреса было site.ru/zapis/, то есть /category/art1 вырезалась бы из строки, но после вырезания строки показывалось содержимое site.ru/category/art1/zapis/?
Легко:
RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^category/art1/zapis/$ http://%{HTTP_HOST}/zapis/ RewriteRule ^zapis/$ /category/art1/zapis/
А теперь давайте подробнее разберем, что же тут написано и что вообще происходит.
Как известно mod_rewrit на apache постоянно просматривает список правил, пока URL можно хоть как-то изменить.
И не редко получаются бесконечные циклы.
Чтобы ограничить цикл выполнения правил одной итерацией, можно использовать конструкцию из первой строки. Она предает apache статус был ли выполнен редирект или нет и если да, то пропустить следующие правила. К слову, на nginx эта строка не нужна.
Вторая строка делает 301 редирект с www.site.ru/category/art1/zapis/ на www.site.ru/zapis/
Третья же строка говорит серверу, что если адрес вида www.site.ru/zapis/, то надо показывать то, что находится по адресу www.site.ru/category/art1/zapis/
Помните, что с великой силой редиректа приходит и великая ответственность, так что используйте полученный знания с умом.
- Принцип «от меньшему к большему»: располагайте редиректы от частных к более глобальны. Т. е. переадресация со страницы на страницу будет выше, чем переадресация с без www на www.
- Избегайте последовательных — двойных, тройных — редиректов. Один редирект перенаправляет пользователя только один раз.
- Проверьте HTTP заголовки и статусы ответа сервера, чтобы убедиться в правильности работы редиректа.
В заключении хотелось бы по пунктам огласить условиях при которых стоит и не стоит использовать .htaccess переадресацию.
Когда редирект необходим
- Вы переехали на другой домен: и вам логично не хочется потерять своих клиентов — настоящих и потенциальных, а также есть необходимость передать вес прошлого сайта на новый.
- Хотите склеить зеркала: у вас несколько доменных имён с разным написанием бренда и вы перенаправляете всех посетителей на основной сайт.
- Страница сменила свой адрес: структура вашего сайта была реорганизована и вы пытаетесь предотвратить возможный беспорядок.
- Хотите избавиться от дублей страниц или копии сайта: не стоит относится к дублям как чему-то безвредному и незначительному. С дублями вы теряете в весе и сдаете позиции конкурентам, а так же дублирование контента может привести к штрафам от поисковых систем.
В каких случаях не нужно использовать редирект?
- Вы временно переезжаете на новую страницу: для этого есть 302 и 307 код, это гарантия того, что не произойдёт склейки страниц и оригинальная страница не выпадет из поисковой выдачи.
- Вы переезжаете из-за проблем со старым доменом: если у вас есть баны, фильтры и штрафы, то при склейке к вам перейдет не только ТИЦ и PR, но и все беды, от которых вы бежали.
Не туда попали: или как удалить страницы сайта из поиска Яндекс.
Сложные редиректы
Для сложных редиректов существует модуль mod_rewrite — это средство преобразования URL-адресов, использующее регулярное выражение. Для редиректа используются три важные директивы: RewriteCond, RewriteRule и RewriteEngine.
- RewriteEngine включает или выключает работу механизма преобразования:
RewriteEngine on | off
Положение on-off включает и выключает работу модуля.
2. RewriteCond — определяет условие какого-либо правила, при котором происходит преобразование. Сразу после директивы чаще всего идут переменные %{HTTP_HOST} и %{REQUEST_URI}, которые означают адрес сервера (например, example.ru) и ресурс, запрошенный в строке HTTP-запроса, соответственно.
3. RewriteRule — идёт после одного или нескольких RewriteCond. Это правило преобразования URI, которое применяется только при условии выполнения RewriteCond.
Синтаксис директивы RewriteRule выглядит следующим образом:
RewriteRule Шаблон Подстановка
Здесь стоит дать пояснение к используемым символам регулярного выражения, которое задает шаблоны строк:
Метасимволы используются для задания групп символов и меток в шаблоне:
- ^ — метка начала строки,
- $ — метка конца строки,
- \ — экранирующий слеш, позволяет считать следующий за ним метасимвол обычным символом,
- . — точка, обозначает любой символ, но только один,
- () — группировка.
- ! — отрицание,
Флаги определяют дополнительные опции для данного правила и перечисляются в квадратных скобках через запятую:
- NC — (nocase) отключает проверку регистра символов.
- R — (redirect) останавливает процесс преобразования и возвращает результат браузеру клиента как редирект на данную страницу (302, MOVED TEMPORARY). С данным флагом можно указать другой код результата, например R=301 возвратит редирект с кодом 301 (MOVED PERMANENTLY).
- L — (last) останавливает процесс преобразования, и текущая ссылка считается окончательной.
Способ 6. Псевдоредирект через IFRAME или FRAMESET.
Почему псевдоредирект? Потому что по факту редиректа не происходит, а просто в фрейме грузится нужная страничка.
Даже если растянуто на всю страничку, а основная страница не содержит кода или содержит минимальный код (например, Метрика или счётчик).
Как правило, такой редирект, не детектируется рекламными сетями, которые не пропускают редиректные ссылки (например Яндекс.Директ), а в URL-строке видно только адрес оригинальной странички с кодом, а не той что грузится во фрейме.
Вариант А — через FRAMESET:
<html> |
— в этом случае нельзя разместить другой код (метрику, счётчики и т.п.) на самой страничке, т.к. он все равно не выполнится
Вариант B — через IFRAME:
<html> <head> <title>Заголовок странички</title></head> <body style=»margin: 0; padding: 0; overflow: hidden;»> <iframe src=»https://yandex.ru/» height=»100%» width=»100%» frameborder=»0″ scrolling=»yes»></iframe> Здесь можно код метрики поставить </body> |
Этот вариант уже лучше (хотя некоторые антивирусы могут блокировать iframe, но скорее всего только невидимый iframe, а в данном случае видимый) — так как можно разместить код счётчика или метрики рядом для определения статистики.
Я думаю довольно подробно поведал о всех редиректах, и всем стало более менее понятно как сделать редирект.
P.S. Обратите внимание на страницу РЕКОМЕНДУЮ, где Вы найдете качественные бесплатные курсы по блоговедению и заработку в интернет.
Жду Ваших комментариев. Подписывайтесь на обновления блога. Дмитрий Леонов | leonov-do.ru
Виды редиректов по назначению
Чтобы улучшить положение своего сайта в выдаче поисковиков, нужно удалить лишние копии.
Переход на адрес без префикса www. Основное зеркало настраивается путем добавления в файл .htaccess таких команд:
1-я строка с кодом – RеwrіtеСоnd %{НТТР_НОSТ} ^www\.(.*)$
2-я строка – RеwrіtеRulе ^(.*)$ httр://%1/$1
Такой редирект можно провести и другим способом:
1-я строка – RеwrіtеЕngіnе Оn
2-я строка с частью кода – RеwrіtеСоnd %{НТТР_НОSТ} ^www\.prіmеr-sаіtа\.соm$
3-я строка – RеwrіtеСоnd %{RЕQUЕSТ_URІ} !^/rоbоts.*
4-я строка – RеwrіtеRulе ^(.*)$ httр://рrіmеr-sаіtа.соm/$1
Массовое объединение файлов іndех с расширениями *.рhр, *.html, *.htm и *.аsр
1-я строка с кодом – RеwrіtеСоnd %{ТНЕ_RЕQUЕSТ} ^{З,9}\ /іndех\.(рhр|html|htm)\ НТТР/
2-я строка – RеwrіtеRulе ^(.*)іndех\.(рhр|html|htm)$ httр://рrіmеr-sаіtа.соm/$1
Изменение протокола на https. Чтобы перевести сайт на защищенный протокол, прописываем комбинацию:
1-я строка – RеwrіtеСоnd %{НТТРS} =оf
2-я строка – RеwrіtеRulе ^(.*)$ httрs://%{НТТР_НОSТ}/$1
Есть также такой способ:
1-я строка – RеwrіtеСоnd %{НТТР:Х-НТТРS} !1
2-я строка – RеwrіtеRulе ^(.*)$ httрs://%{НТТР_НОSТ}/$1
Переход на httр
1-я строка с формулой – RеwrіtеСоnd %{НТТРS} =оn
2-я строка – RеwrіtеRulе ^(.*)$ httр://%{НТТР_НОSТ}/$1
Удаление лишних тире и слешей. Если в url есть ненужные слеши, нужно настроить редирект на страницу без них:
1-я строка – команда www.рrіmеr-sаіtа.соm/саtаlоg/раgе-1.html:
2-я строка – RеwrіtеСоnd %{RЕQUЕSТ_URI} ^(.*)//(.*)$
3-я строка – RеwrіtеRulе . %1/%2
Чтобы склеить тире, прописываем от www.рrіmеr-sаіtа.соm/саtаlоg/раgе-1.html:
1-я строка – RеwrіtеСоnd %{RЕQUЕSТ_URI} ^(.*)—(.*)$
2-я строка – RеwrіtеRulе . %1-%2
Для облегчения процесса при отсутствии опыта стоит использовать специальные сервисы, генерирующие редиректы. Достаточно подставить свои данные, и сформируется код.
Что делать, если обнаружили скрытый редирект на сайте
Действия по исправлению зависят от причины, по которой появилась скрытая переадресация.
Внимание! Перед тем как что-то делать с работающим сайтом, создайте резервную копию на хостинге и проверьте, работает ли она
Если сайт взломали злоумышленники
У вас должны быть резервные работающие копии, попробуйте восстановить сайт. Для проверки на вирусы обратитесь к хостеру, обычно хостинги предоставляют такую услугу. Проверка покажет, где вирусы и что нужно удалить.
Можно поискать код вручную, часто зловредные элементы прописывают в этих местах:
-
в .htaccess — обычно это выглядит как определение устройства по юзер-агенту и переадресация;
-
в index.php в корне сайта — обфусцированный код в конце файла, огромные строки кода легко заметить и удалить;
-
в .js-файлах — аналогично, код в конце файла.
Обязательно обновите пароли — от хостинга, FTP, панели администратора и базы данных.
Если виноваты скрипты виджетов
Редирект на чужой сайт может работать через сторонние скрипты, плагины, шаблоны CMS, темы, другие элементы. Виноваты могут быть как новые недавно установленные плагины, так и те, которые давно стоят, но уже устарели — их могли взломать.
Если вы сами ничего не устанавливали, посмотрите историю доступов к сайту. Возможно, другие администраторы или модераторы поставили какой-то зараженный скрипт по незнанию или даже чтобы вам навредить
Что делать:
-
Найдите какую-то из страниц, на которой срабатывает переадресация мобильного трафика, посмотрите код. Если на ней находятся чужие скрипты и элементы — удаляйте их по одному. Код перенаправления нужно искать в тегах script и iframe . Он может иметь вид
-
После каждого удаления заходите на страницу со смартфона или через эмулятор браузера, и проверяйте, остался ли редирект.
-
Как только вы найдете этот вредный элемент, удалите его с других страниц. Если заражен был какой-то важный плагин, проверьте актуальность версии. Напишите разработчику, возможно, он уже поправил уязвимость.
Обязательно обновите CMS и плагины до последней стабильной версии, удалите все, что вызывает подозрение и подберите лицензионные решения с официальных источников.
Если веб-мастер сотрудничает с некачественными партнерками
Еще одна причина — веб-мастер специально или неосознанно сотрудничает с фейковыми партнерскими системами. Обычно они притворяются простыми партнерками с баннерной рекламой.
Часто такие партнерки рекламируются в Яндекс.Директе и Google Ads или присылают предложения сотрудничества на почту, представляясь маркетинговыми агентствами и обещая подозрительно высокий доход. Прекращайте работу с такими партнерками и отказывайтесь от подозрительных предложений.
Правила Redirect, RewriteRule и RewriteCond
1.1. Директива Redirect
Синтаксис Redirect:
Redirect — устанавливает прямой редирект с одной страницы на другую.
В status пишут код редиректа. Является необязательным параметром. Чаще всего пишут 301, что сигнализирует о постоянном смене адреса страницы.
Важно, чтобы страница «/откуда» была прописана в формате без указания полного адреса сайта, но с указанием полного относительного адреса URL начиная со слэша «/» (т.е. с корня сайта)
Страницу куда идёт редирект нужно писать полностью, т.е. абсолютный адрес страницы URL: с названием домена и протокола http или https.
Например:
Можно также писать по другому:
1.2. Директива RewriteRule
Директива RewriteRule устанавливает правила перехода. Синтаксис следующий:
- При внешнем редиректе меняется урл адреса в строке браузера — «»;
- При внутреннем — не меняет урл адреса в строке браузера — «» или «»;
1.3. Директива RewriteCond
Директива RewriteCond определяет условия, при котором выполняется правила в RewriteRule. Синтаксис:
Например, этими условиями могут быть браузер пользователя, IP-адрес, заголовок и т.д.
1.4. Директива RedirectMatch
Директива RedirectMatch аналогична Redirect с той лишь разницей, что позволяет записывать регулярные выражения. Синтаксис:
Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://www.%1/$1/
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)$ http://www.%1/$1/
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)$ http://www.%1/$1
Rewriting a URL
This example rewrites a URL to another URL. This rewrites example.com/1.html to example.com/abc.php?id=1.
Options +FollowSymLinks RewriteEngine On RewriteRule ^(+).html /abc.php?id=$1
The following explains the rules above:
- (+)
- allows any digit, and only any digit, 1 or more times.
- (*)
- allows any lowercase letter, plus “-” for word separation, 0 or more times. If you want it to support uppercase too, use “(*). For example:
- RewriteRule ^place/(*).html /place/abc.php?id=$1
- appends this to your internal scripting query string, and makes it the Last rewrite rule executed.
After using this method, you can retrieve the webpage with either address type. This is handy for retro-fitting a website that was not designed with mod_rewrite in mind. This is good because it does not destroy any bookmarks saved on users computers.
View the following link for more information and examples about mod-rewrite:
mod-rewrite cheat sheet
Настройка 301 редиректа со страницы на страницу
Довольно часто возникает ситуация, когда страница сайта была удалена или вынуждена сменить свой URL. При обращении к её старому адресу, пользователь, само собой, увидит страницу 404 ошибки (не найдено).
Если станица маловажная, то не стоит и возиться, но если к ней часто обращались посетители сайта (и, возможно, у кого-то она сидит в закладках), если на неё ведут неподконтрольные вам внешние ссылки или, наоборот, подконтрольные внутренние, но в таких объёмах, что очень хочется их править, то настройка 301 редирект со старой страницы на новую станет для вас идеальным решением.
Также его можно использовать для борьбы с дублями страниц. В общем нужно писать книгу на тему «99 способов использование Redirect 301». Вот его синтаксис:
Redirect 301 /old-page.html http://new-domain.ru/new-page.html
Ну или так, результат будет один и тот же:
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
Поясняю: /old-page.html — относительный адрес старой страницы. Он может быть вложенным: /old-category/old-page.html, ну или таким: /old-category/old-page/ — тут никаких ограничений нет. Тоже самое относится к http://new-domain.ru/new-page.html (новой странице), с той лишь разницей, что путь тут абсолютный (не обязательно, чтобы это был новый домен — может быть просто новый внутренний адрес страницы).
HTML перенаправления
Один из самых простых способов перенаправления – мета-тег refresh. Можно разместить этот мета-тег внутри тега
в верхней части страницы HTML:
<meta http-equiv=”refresh” content=”0”; url=’http://new-website.com’ />
Атрибут content – атрибут задержки перед перенаправлением браузера на новую страницу, он установлен на 0 секунд
Не нужно устанавливать код состояния HTTP, но важно перепроверить написание кавычек выше (есть вложенные кавычки, поэтому лучше использовать разные типы кавычек)
Хотя этот метод самый простой для перенаправления веб-страницы, у него есть недостатки. В соответствии с W3C некоторые браузеры не воспринимают мета-тег refresh. Пользователи могут увидеть страницу А, которая загрузится раньше, чем Вы будете перенаправлены на страницу В. Также она отключает кнопку назад на старых браузерах. Поэтому этот метод не рекомендуется использовать вообще.
Лучший вариант – перенаправление сайта с JavaScript.
Наиболее популярные правила
Приведенные примеры работают для серверов функционирующих на APACHE, для NGINX настройки в файле .htaccess работать не будут. В примерах используется %{QUERY} — так обозначается часть URL, которая следует после знака вопроса. Правила для редиректа срабатывают только при условии соответствия правилу указанному в редиректе.
При настройке правила редиректов в файле .htaccess все правила необходимо указывать после указанных двух строк, либо просто добавьте их:
Options +FollowSymLinks RewriteEngine On
301 редирект для страниц имеющих Get-параметры в URL
Для наглядности примера допустим адрес страницы имеет вид http://mysite.ru/catalog/index.php?IBLOCK_ID=5&SECTION_ID=15. Следующее правило будет делать переадресацию:
RewriteCond %{QUERY} ^IBLOCK_ID=5&SECTION_ID=15$ RewriteRule ^catalog/index\.php$ /newcatalog/?
Иногда необходимо настроить редирект для изменяющихся Get-параметров, например в текущем примере динамическим параметром будет SECTION_ID:
RewriteCond %{QUERY} ^IBLOCK_ID=5&SECTION_ID=(.*)$ RewriteRule ^catalog/index\.php$ /newcatalog/?
Переадресация со страниц без значения Get-параметра
Например адрес страницы имеет вид — http://mysite.ru/?addon, тогда редирект будет следующим:
RewriteCond %{QUERY} ^addon$ RewriteRule ^$ /?
Переадресация одного адреса, без вложенных адресов
Например довольно часто необходимо настроить переадресацию со страницы раздела http:/site.ru/razdel/, однако прочие страницы в данном разделе должны работать без редиректа, например страница http://mysite.ru/razdel/section.php?SECTION_ID=1. Для этого нужно добавить всего один символ — $.
RewriteRule ^razdel/$ http://mysite.ru/new-razdel/
Как проверить редирект страницы
Самый очевидный способ — проверить выполнение в браузере. Перед проверкой не забудьте очистить кэш. Рекомендуется также зайти в браузер в режиме инкогнито.
Внешний вид сервиса проверки редиректов Redirect Checker
Можно использовать и специальные сервисы, которые помогут избежать этих «заморочек», например:
- Redirect Checker;
- Redirect Check;
- Чекер PrCy.
Заключение Без умения настройки редиректа в своём арсенале не обойтись ни одному веб-мастеру. Однако для реализации наиболее распространенных типов перенаправления совсем необязательно иметь глубокие знания по данному вопросу. Новичкам помогут специальные сервисы для генерации кода и проверки готовых.
Как настроить редирект на www (или без www)
Подобные перенаправления требуются для случаев, когда сайт доступен по вариантам nsite.ru и www.nsite.ru, в этом случае поисковики считают их дублями и могут либо самостоятельно выбрать один из вариантов в качестве главного зеркала, либо в поиске будут варианты с обоих доменов. В общем случае, это отрицательный фактор при ранжировании сайта.
Вариант попроще, для одного домена. Перенаправление производится с поддомена www.site.ru на site.ru:
Здесь появилась новая директива RewriteCond, которая задаёт условие, при котором должны срабатывать редиректы — правила RewriteRule. Условие, в данном случае, имя домена, соответствующее www.nsite.ru (в регулярных выражения символ точки означает «любой символ», поэтому его желательно экранировать с помощью обратного слеша).
Обратное перенаправление тоже выполнить очень просто:
Оба варианта рабочие, но у них есть маленький минус — для каждого нового конфига необходимо заменять домен nsite.ru на свой собственный. Нельзя ли сделать уникальный вариант? Легко!
Редирект с любого поддомена www:
Редирект на поддомен с www:
%{HTTP_HOST} — текущий домен