Редирект: что такое и какие виды бывают
Содержание:
- Когда лучше не использовать 301 редирект?
- Когда редирект с https на http не работает — что делать?
- Сервисы для контроля Редиректов
- Особенности редиректа для популярных CMS
- Несколько примеров совмещения 2-х редиректов в один
- Переадресация 301 с http на https
- Создать код редиректа автоматически
- Сложные редиректы
- Как переехать на новый домен? Оптимальная стратегия 301 редиректа
- Для чего нужен редирект
- Примечания и ошибки
- Как узнать, что переадресация работает правильно
- Настраиваем редиректы для SEO
- Пример: объясняем на пальцах
Когда лучше не использовать 301 редирект?
- Когда 301 редиректы не могут быть реализованы, или их внедрение займет слишком много времени
- Дублированный контент, но вы хотите сохранить обе страницы для людей (например, показывать на разных урлах разный размер одежды)
- Страницы с несколькими разными url по сути одной страницы (например, сортировки каталога, отслеживания партнерских ссылок, …)
- Кросс-доменов, когда оба сайта похожи, но похожий контент нужно оставить на каждом из доменов.
Итого
В общем оба варианта позволяют сохранить ссылочный вес, и они будут аналогично рассматриваться Google. Но в целом, 301 редирект является более предпочтительным методом.
Когда редирект с https на http не работает — что делать?
Не всегда прописывание одного кода на разных сайтах срабатывает с полным успехом. Бывает, возникают ошибки по вине сервера, из-за бардака в конфигурационных файлах или элементарно сделана ошибка в командных строчках.
Когда 301 редирект с https на http не работает — пользуемся другими вариациями кода. В htaccess меняем предыдущий распространенный код на вот такой:
# Redirect HTTPS to HTTP
R ewriteCond %{HTTP:X-Forwarded-Proto} =https
R ewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}
Если не работает redirect 301 с http:// на https://, в .htaccess прописываем следующее:
R ewriteEngine On
R ewriteCond %{SERVER_PORT} !^443$
R ewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI}
В случае возникновения циклической реакции — корректируем под такой шаблон:
R ewriteEngine On
R ewriteCond %{HTTPS} off
R ewriteCond %{HTTP:X-Forwarded-Proto} !https
R ewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
Сервисы для контроля Редиректов
Конечно же, как же без сервисов для отслеживания редиректов на сайтах. За всем нужен глаз да глаз. Поэтому посоветую парочку вариантов для контроля.
Расширения для браузера, которые контролируют редиректы:
- HttpFox для Mozilla;
- HTTP Headers для Google Chrome.
С помощью этих инструментов можно отслеживать перенаправление по адресам, скорость и порядок загрузки страниц. Таким способом можно выявить циклическую цепочку, если она образовалась. На этом закругляю свои длинную статейку, надеюсь, мои советы вам помогут разобраться во всех основных тонкостях перенаправления ссылок.
Особенности редиректа для популярных CMS
CMS-системы облегчают процесс настройки редиректа вплоть до пары кликов. Опишем особенности взаимодействия с различными платформами.
WordPress
Чтобы перенаправить страницу, Вам нужно скачать плагины из панели управления. Зайдите в «Плагины» -> «Добавить новый». Из доступных выберите необходимый и скачайте.
OpenCart
Чтобы совершить редирект через OpenCart достаточно зайти в «Менеджер 301 редиректов» и выбрать необходимый вариант перенаправления.
Битрикс
В Битриксе Вам нужно обратиться к модулю «Редирект мастер», но за него придется доплатить. В оплаченном меню стоит выбрать свой вид редиректа и активировать его.
Joomla
Найти компонент, отвечающий за редирект в Joomla, можно в меню «Компоненты» — > «Перенаправление». Здесь Вы увидите все имеющиеся редиректы и сможете создать новый, заполнить все поля и сохранить настройки. После этого редирект активируется.
Несколько примеров совмещения 2-х редиректов в один
Для избежания последовательных редиректов можно использовать совмещенные варианты.
301 редирект с www на без www и со слешем в конце URL
Комбинируем и
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1/ RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^(.*)$ RewriteRule ^(.*)$ http://%1/$1/
301 редирект с без www на с www и со слешем в конце URL
Комбинируем и
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
301 редирект с без www на с www и без слеша в конце URL
Комбинируем и
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} ^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
301 редирект с www на без www и без слеша в конце URL
Комбинируем и
RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)\/$ http://%1/$1 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^(.*)$ RewriteRule ^(.*)\/$ http://%1/$1
Переадресация 301 с http на https
При помощи 301-го редиректа мы получаем два результата:
- Сообщаем поисковым системам что «http://elims.org.ua» и «https://elims.org.ua» — это одна и та же страница. А точнее говорим что мы переместили страницу с «http://elims.org.ua» на «https://elims.org.ua» и просим перенести весь ссылочный вес и прочие «заслуги».
- Всех посетителей http-версии страницы автоматически переадресовываем на https-версию страницы.
301-ю переадресацию с http на https можно реализовать тремя способами, через:
- файл .htaccess
- php-код
- плагин
301 редирект с http на https через .htaccess
Вариантов кодов для редиректа с http на https через .htaccess существует большое количество, я для примера приведу два из них:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.yoursite.com/$1 </IfModule>
Или еще один код:
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^yoursite.com RewriteCond %{HTTP_HOST} ^www.yoursite.com RewriteRule ^(.*)$ https://www.yoursite.com/$1 </IfModule>
Не всегда такая переадресация работает, у меня например по началу выбивало ошибку «ERR_TOO_MANY_REDIRECTS» — «На этой странице обнаружена циклическая переадресация».
Но после в справочной информации своего хостинга ukraine нашел код, который заработал и позволил отказаться от плагина.
Рабочая версия код для моего wordpress в режиме мультиблога:
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - #for SSL RewriteCond %{HTTP:SSL} !=1 RewriteRule ^(.*) https://elims.org.ua/$1
301 редирект с http на https через php-код
Все просто — открываем файл в шаблоне functions.php и прописываем следующий код:
function force_https () { if ( !is_ssl() ) { wp_redirect('https://' . $_SERVER . $_SERVER, 301 ); exit(); } } add_action ( 'template_redirect', 'force_https', 1 );
или еще один вариант, предложенный читателем — именно такой вариант для читателя был рабочим:
<?php add_action ( 'template_redirect', 'force_https', 1 ); function force_https () { if ( !is_ssl() ) { wp_redirect('https://' . $_SERVER . $_SERVER, 301 ); exit(); } } ?>
301 редирект с http на https через wordpress плагин
Более опытные веб-мастеры предпочитают обходимся своим кодом и не использовать плагины в тех случаях, когда можно без них обойтись. Это связано с тем, что в плагинах часто реализован лишний функционал, который не нужен и может создавать лишнюю нагрузку. При этом сами плагины могут некорректно работать. Но в данном случае именно этот метод переадресации я предпочел, так, как нашел плагин состоящий всего лишь из нескольких строк php-кода, который опубликован выше. Все-таки активировать и деактивировать плагин более удобней, чем редактировать php-файлы.
Упомяну три плагина:
- WordPress HTTPS (SSL): можно активировать принудительный вход в админку через https, настраивать https только для определенных страничек\записей, либо для определенных адресов по регулярным выражениям, удалять со страницы весь не https-контент, изменять исходящие ссылки с http на https версии сайтов и пр. Этот плагин заработал не на всех шаблонах.
- Easy HTTPS Redirection: можно настроить переадресацию для всех страниц или только для определенных. По сути плагин добавляет в файл .htaccess код для редиректа. Но, как я писал выше, этот метод у меня вызывает ошибки «ERR_TOO_MANY_REDIRECTS» — «На этой странице обнаружена циклическая переадресация». При этом после деактивации плагина пришлось вручную удалять его код из файла .htaccess.
- WordPress Force HTTPS — простой плагин, ничего лишнего. Переадресация реализована через php-код. Именно на нем я остановился.
Рекомендую через некоторое время убедится что поисковики не включают в индекс дубли страниц (http и https версий). Для это возьмите несколько адресов своих страниц и вбейте в гугле запрос подобный моему:
site:elims.org.ua inurl:elims.org.ua/blog/xosting-ukraine-obzor-i-otzyv/
На моем примере я увижу какие версии страницы «elims.org.ua/blog/xosting-ukraine-obzor-i-otzyv/» есть в поисковом индексе. Должна быть лишь одна версия — с https.
Создать код редиректа автоматически
Сгенерировать код для настройки редиректа можно и с помощью инструментов.
К примеру, с этим справится генератор 301 Redirect Code от RapidTables. Есть возможность выбора: сформировать код для вставки в .htaccess, а также PHP, HTML, JavaScript и другой. Комментарии со ссылкой на инструмент можно удалить.
Генератор RapidTables
301 Redirect Generator от Webworkshop предлагает сформировать код для редиректа со страницы на страницу, с домена на домен и с директории на директорию. Отдельно есть окно для перехода на домен с www. Для редиректов на домен есть только код для Apache .htaccess, для страниц есть возможность выбора.
Генератор от Webworkshop
Batch RewriteRule Generator позволяет настраивать редиректы для доменов или страниц пакетно: введите список URL-адресов с табуляцией или пробелами, можно скопировать пары из таблицы Excel, и генератор выдаст нужный код.
Batch RewriteRule Generator
Сложные редиректы
Для сложных редиректов существует модуль 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) останавливает процесс преобразования, и текущая ссылка считается окончательной.
Как переехать на новый домен? Оптимальная стратегия 301 редиректа
Оптимальной стратегией переезда на новый домен, учитывая пожелания 2-ух основных поисковых систем рунета Яндекс и Google, это:
- постраничный 301 редирект со старого сайта на новый.
- при этом для файла robots.txt редирект не делаем, а прописываем в нем директиву Host на новый домен.
Тогда код для настройки редиректа на старом сайте может иметь следующий вид:
а файл robots.txt для старого сайта:
Генерация 301 редиректов
Если вы не очень технически подкованы, то можно воспользоваться сервисами генерации базовых редиректов:
На таких сервисах можно только подставлять собственные данные и сразу получать готовый код для редиректов между доменами, директориями или урлами.
Как проверить 301 редирект
После каждого изменение логики работы 301 редиректа необходимо проверять работоспособность сайта:
Также для более тщательной проверки отработки редиректов можно использовать следующие сервисы:
http://bertal.ru — максимально подробная информация по ответам сервера.
Как и когда лучше использовать 301 редирект vs Canonical
301 — Эй, Поисковики: моя страница уже не здесь, и она навсегда переехала на новую страницу. Пожалуйста, удалите старую страницу из индекса и передайте её вес на новую страницу.
Canonical — Эй, Поисковики (так для большинства поисковых систем): у меня есть несколько версий этой страницы (или содержания), пожалуйста, индексируйте только ту версию страницы, на которую стоит canonical. Я буду держать другие страницы доступными для людей, чтобы они могли их видеть, но, Поисковик, не включай их в свой индекс и пожалуйста, передай вес на мою предпочтительную страницу.
Для чего нужен редирект
Редиректы играют важную роль в SEO-оптимизации (Search Engine Optimization). После создания и публикации сайта в интернете владельцу нужно позаботиться о том, чтобы на него заходило как можно больше пользователей. Повысить посещаемость можно за счёт SEO-оптимизации.
Что включает SEO-оптимизация
SEO-оптимизация — это комплекс действий с сайтом, которые улучшают его позицию в поисковых системах (самыми популярными на территории России являются Яндекс и Google).
Чтобы улучшить поисковую позицию, нужно:
Мы перечислили некоторые методы SEO-оптимизации. В этой теме много нюансов, поэтому для продвижения конкретного сайта следует консультироваться со специалистами. Если вы собираетесь заниматься SEO самостоятельно, рекомендуем подписаться на тематические блоги или пройти обучающие курсы.
Со временем при грамотной работе с SEO сайт зарабатывает высокую позицию в поисковой выдаче. Иными словами, пользователи, которые ищут услуги вашего профиля, видят ваш сайт вверху результатов поиска:
Если ресурс заработал высокую позицию, за ней нужно следить, иначе сайт будет терять посетителей, а бизнес — клиентов. Но иногда возникает потребность в действиях, которые вредят SEO-оптимизации. Например, когда ресурс нужно перенести на другой домен (при ребрендинге или если вы не продлили домен, и его зарегистрировал другой человек).
Если просто привязать новый домен в панели управления, случится «SEO-катастрофа»: сайт потеряет поисковый трафик, и придется заниматься продвижением с нуля. Ситуацию исправит редирект — благодаря нему можно «связать» старый и новый домены и сохранить накопленный трафик.
Другая причина для использования редиректов связана с тем, что пользователи часто добавляют сайты в закладки. Это позволяет быстрее открывать страницы, а не вводить адрес сайта при каждом посещении. Если у сайта или страницы изменится адрес, а редирект не будет настроен, пользователь увидит ошибку «Страница не существует/не найдена.
Также без редиректа не обойтись в следующих случаях:
Примечания и ошибки
С чем можно столкнуться, и о каких деталях не стоит забывать при настройке 301 редиректа:
- строгий учет последовательности правил редиректа — это первое, о чем следует помнить. Поэтому в случае не выполнения определенного правила, стоит перепроверить — нет ли иных редиректов, противоречащих ему;
- 301 редирект имеет множество особенностей и непростой синтаксис, все это сложно постоянно держать в голове, — так что официальные мануалы вам в помощь. Кроме них, помочь может логика и последовательный перебор нескольких вариантов;
- проверка работоспособности сайта и всех внедренных правил редиректа — это обязательное условие благополучного завершения его настройки. Не поленитесь зайти в разделы и страницы ресурса, не только на главную страницу, дабы исключить любые проблемы в дальнейшем. При допущении ошибок в синтаксисе инструкций вполне может перестать работать и весь сайт.
Также существует несколько ситуаций, когда использование 301 редиректа будет ошибочным. Так, лучше не применять многоходовый редирект, если его внедрение займет слишком продолжительное время. Или, например, при наличии контента, который дублируется, и по ряду причин нужно сохранить обе страницы для пользователей. Если страница и ее содержимое не релевантны, то от редиректа тоже стоит отказаться. Ошибкой будет настройка редиректа на некорректно работающую страницу (страница должна быть с 200 или 404 ответом сервера). И, наконец, неверным будет редирект файла robots.txt.
Как узнать, что переадресация работает правильно
Узнать, корректен ли код 301 редиректа можно при помощи браузера. Введите в адресную строку URL страницы, с которой совершается переадресация. В идеале Вы должны увидеть ту страницу и тот URL, на которую был настроен редирект.
После того, как Вы настроили 301 редирект, его необходимо проверить на корректность работы. Для этого введите в адресной строке своего браузера URL страницы, с которой была сделана переадресация. Если Вы видите новую страницу, то есть, ту, на которую сделали редирект — то все корректно работает.
Также можно заглянуть в Яндекс.Вебмастер, открыть раздел «Инструменты» — > «Проверка ответа сервера». В поле «Опрашиваемый URL» введите адрес старой страницы. Вы должны получить код статуса http — «301 Moved Permanently».
Настраиваем редиректы для SEO
Как мы уже упоминали, это самый популярный способ использования .htaccess. Перед тем, как настраивать тот или иной вид переадресации, убедитесь, что это действительно необходимо. Например, редирект на страницы со слешем в некоторых CMS настроен по умолчанию. О настройках редиректа для SEO мы писали в блоге.
При настройке 301 редиректов помните о двух правилах:
- Избегайте нескольких последовательных перенаправлений — они увеличивают нагрузку на сервер и снижают скорость работы сайта.
- Располагайте редиректы от частных к глобальным. Например, сначала переадресация с одной страницы на другую, затем общий редирект на страницы со слешем. Это правило работает не в 100% случаев, поэтому с размещением директив нужно экспериментировать.
1. Настраиваем постраничные 301 редиректы
Это потребуется в следующих случаях:
- изменилась структура сайта и у страницы поменялся уровень вложенности;
- страница перестала существовать, но нужно сохранить ее входящий трафик (например, в случае отсутствия товара обычно делают переадресацию на товарную категорию);
- поменялся URL, что крайне нежелательно, но тоже встречается.
Просто удалить страницу — плохая идея, лучше не отдавать роботу ошибку 404, а перенаправить его на другой URL. В этом случае есть шанс не потерять позиции сайта в выдаче и целевой трафик. Настроить 301 редирект с одной страницы на другую можно при помощи директивы простого перенаправления:
- — адрес страницы от корня, без протокола и домена. Например, .
- — полный адрес страницы перенаправления, включая протокол и домен. Например, .
2. Избавляемся от дублей
Каждая страница сайта должна быть доступна только по одному адресу. Для этого должны быть настроены:
- редирект на страницы со слешем в конце URL или наоборот;
- главное зеркало — основной адрес сайта в поиске.
Сделать это можно при помощи модуля . В его составе используются специальные команды — директивы сложного перенаправления. Первой командой всегда идет включение преобразования URL:
Переадресация на слеш или наоборот
Настроить ли переадресацию на страницы со слешем или без, в каждом случае нужно решать индивидуально. Если у сайта уже накоплена история в поиске, анализируйте, каких страниц в индексе больше. Для новых сайтов обычно настраивают редирект на слеш. Проверить, не настроена ли переадресация по умолчанию, просто: удалите/добавьте слеш в конце URL. Если страница перезагрузится с новым адресом — мы имеем дубли, требуется настройка. Если URL подменяется — все в порядке. Проверять лучше несколько уровней вложенности.
Код 301 редиректа на страницы без слеша:
3. Настраиваем главное зеркало
Для начала нужно определиться, какой адрес будет являться основным для поиска. SSL-сертификат давно уже мастхэв. Просто установите его и добавьте правило в .htaccess. Не забудьте также прописать его в robots.txt.
Редирект на HTTPS
Определять, с «www» или без будет главное зеркало, можно несколькими способами:
- добавить сайт в Яндекс.Вебмастер в двух вариантах, в консоли отобразится информация, какой URL поисковик считает главным зеркалом;
- проанализировать выдачу и посмотреть, каких страниц сайта больше в индексе;
- для нового ресурса не имеет значения, с «www» или без будет адрес, выбор за вами.
После того как выбор сделан, воспользуйтесь одним из двух вариантов кода.
Редирект с без www на www
4. Перенаправляем с одного домена на другой
Самая очевидная причина настройки этого редиректа — переадресовать роботов и пользователей на другой адрес при переезде сайта на новый домен. Также им пользуются оптимизаторы для манипуляций ссылочной массой, но дроп-домены и PBN — серые технологии продвижения, которые в рамках этого материала мы затрагивать не будем.
Воспользуйтесь одним из вариантов кода:
или
Не забудьте поменять в коде «mysite1» и «mysite2» на старый и новый домен соответственно.
Пример: объясняем на пальцах
Как с помощью 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, но и все беды, от которых вы бежали.
Надо ли проверять скорость загрузки своего сайта?.