редирект с главной страницы на внутреннюю
301 редирект: лучшее руководство по настройке
301 код ошибки (Moved Permanently) означает, что данная страница или весь сайт перемещены на новый постоянный URL навсегда. Используется для передачи ссылочного веса. Обязательно проверяйте какой код ошибки отдает сервер, когда настроите данный редирект. Я использую для этого, например, замечательный плагин Firebug для Firefox.
Схема работы 301 редиректа
301 редирект на различных CMS, таких как wordpress, битрикс, друпал, dle, modx, joomla, opencart и других, настраивается с помощью специальных плагинов, а также обычным способом через htaccess или web config.
Основные операторы регулярных выражений
спецсимволы:
модификаторы:
Настройка 301 редиректов в файлах htaccess и web.config
Я публикую здесь только проверенные и технически законченные рабочие варианты 301 редиректов. База рабочих вариантов 301 редиректов будет пополняться.
Редирект со старой статической (чпу) страницы на новую страницу:
Редирект на главную страницу:
Редирект с главной на внутреннюю страницу:
Редирект со страниц сайта с WWW на страницы без WWW:
Редирект со страниц сайта без WWW на страницы с WWW:
Следующий пример позволяет убрать слеш на конце урла.
Редирект 301 со страниц со слешем на конце на страницы без него:
А здесь добавляем слеш в конец урла:
301 редирект с index.php на главную:
Редирект всех внутренних страниц на главную:
Редирект урла с параметром на любую внутреннюю страницу сайта: (Например, со страницы http://www.site.ru/news.php?category=1 на http://www.site.ru/news.php?category=2 (здесь параметр category=)):
Редирект урла с параметром на главную страницу сайта: (Например, http://site.ru/index.php?show_section=12 на главную страницу http://site.ru/ (здесь параметр show_section=12)):
Редирект со старого домена на новый (прописываем в htaccess старого сайта):
Редирект с домена РФ на домен RU. Здесь важно знать, что РФ зона преобразуется в .xn--p1ai, а само название кириллического домена в соответствующий код (punycode) на латинице xn-….
301 редирект каталога:
Вставка включающая в себе все редиректы со страниц index|default с расширениями htm|html|php|asp|aspx на главную:
Пример редиректа со страниц без WWW на страницы с WWW в web.config для IIS:
Пример редиректа со страницы default.aspx на главную в web.config для IIS:
301 Редирект через PHP
73 комментария к “301 редирект: лучшее руководство по настройке”
То есть, если я правильно поняла, при установке ЧПУ, если у меня до этого были адреса страниц вида /p1234? мне необходимо перенаправлять каждую страницу на новый адрес?!
вот эта строка:
RewriteCond %
разве в ней не нужен слеш, экранирующий точку?
RewriteCond %
Иначе… Конечно, работать будет, но …гм… точка означает любой символ, либо его отсутствие, и дальше часть «ru»
Добрый день, Марат!
Можно так как написали Вы, а можно так не делать — как это есть и в моих примерах.
Ошибкой не будут оба варианта. Они рабочие.
Работать-то конечно будут оба варианта.))) Но т.к. Вы мой коллега — не могу пройти мимо. Если бы теоретически существовал вот такой домен www(точка)sitea(точка)ru, то он бы проскочил этот фильтр, т.к. буква «a» подпадает под точку.
И, кстати, после www тоже точка стоит, и она требует экранирования.
Коллега, пожалуй соглашусь с Вами. Случай с экранированием — более общий случай и он учитывает и случай, который Вы показали для примера. Спасибо за дополнения по редиректам. Я внесу соответствующие изменения в статью.
Добрый день, администратор этого сайта. Отличная статья, но я не нашел примера моего редиректа. Подскажите пожалуйста как будет выглядить редирект 301 в этом случаи:
c site(точка)ru/good(точка)php на чпу ссылку site(точка)ru/good_page/
Добрый вечер, Андрей!
Попробуйте, пожалуйста, так
RewriteEngine On
RewriteRule ^(.*)good.php$ http(двоеточие)//site(точка)ru/good_page/ [R=301,L]
RewriteEngine On
RewriteRule ^(.*)good.php$ http://site.ru/good_page/ [R=301,L]
спасибо за ответ, но вариант не работает. Ибо перебрасывает на http://site.ru/good_page/ — в итоге имеем не существующую страницу. Сервер пишет: страница не найдена. Так кстати я тоже пробовал, если просто переходить, то ссылка работает, а если редиректом не работает. Понять пока не могу почему так.
Андрей, будет лучше, если Вы напишите урлы живого своего сайта. Я вот тоже не могу понять почему так. Ведь вариант должен работать.
Подскажите, а если мне нужно сделать редирект.
как сделать редирект страниц с wordpress на страницы html.
Подскажите, буду очень благодарен
Добрый день. Как сделать редиректы со всех страниц, которые содержать цифры в конце.
site.ru/catalog/*/
на
site.ru/catalog/
где * цифры
Здравствуйте.
Проблема вот в чем: после вставки строк:
RewriteEngine On
RewriteCond %
RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]
переадресация работает, но на сайте становится невозможно залогиниться. Почему так?
Все, решил проблему.
А в чём хоть дело было?
Движок Joomla 2.5.4.
В Основных настройках включил Перенаправление URL и нормально стало. А до этого вроде страницу кеширует, ни залогиниться ни вылогиниться.
Забыл самый простой редирект:
Redirect 301 /old-page http://site.by/new-page
А не подскажете как сделать редирект с несуществующих страниц сайта на http://site.ru/page1/
Честно говоря такой редирект никогда не делал и более того скажу, что так делать неправильно! Это как оптимизатор говорю. Любая несуществующая страница должна отдавать 404 код ошибки, а редирект подразумевает 301 код.
Спасибо! Самый хороший, полный и понятный пост про редиректы на данный момент. Для полноты картины не хватает только редиректов со слешем и без на конце.
Например, такой код:
Есть и другие варианты, но почему-то работают не всегда. Этот вроде надёжный.
Добрый день. Подскажите, пожалуйста, как решить такую задачу.
Мне нужно сделать 301 редирект на страницы без html на конце, вида
site.com/category/zdorove-mamy-i-rebenka/ (со слешем либо без на конце).
Помог друг. Вот решение. Добавить нужно к существующим записям:
Добрый день, помогите, не могу определиться! Есть сайт, который имеет около 20-ти страниц, типа http://www.sait.ru/produkt.html.
Все страницы находятся в корневом каталоге в формате HTML, но когда нужно что-то менять на сайте, например, номер телефона, то приходится редактировать все страницы сайта. Поэтому решил создать базу данных на PHP-mysql.
Страницы удается назвать в PHP-mysql только таком виде — http://www.sait.ru/produkt/. Версия php на хостинге PHP 5.2.10 и rewrite_module включен. Прошу вашей профессиональной помощи.
Как правильно настроить редирект со старых адресов типа produkt.html на новые адреса, типа /produkt/ при этом сохранить все возможные привилегии от поисковиков?.
Старые адреса типа produkt.html, будут удалены из корневого каталога, сразу после создании в базе данных новых адресов, типа /produkt/. Пожалуйста, еще вопрос: если будут меняться названия страницы таким образом, например:
Их 20 штук и все они разные.
Можно прописать редирект один раз для всех страниц? или же придется писать для всех страниц по отдельности?
Возник еще вопрос, тоже немало важный. Почему-то, когда открываешь в строке поиска любые страницы, которых нет в базе данных, открывается шаблон страницы без контента, пример:
типа http://www.sait.ru/pro/ или же типа http://www.sait.ru/drt/. В общем, если написать любое слово или несколько любых букв между слешами, открывается шаблон без контента.
Еще пример для динамических сайтов:
http://www.sait.ru/index.php?page=1000, если на место 1000 написать любые цифры, которых нет в базе данных, открывается также пустой шаблон сайта.
301 редирект — используем правильно для внутренней оптимизации
Что такое 301 редирект
301 редирект (301 Permanent Redirect) — ответ сервера, а также серверное перенаправление с одного url-адреса на другой. Благодаря такому перенаправлению можно автоматически отправлять пользователя или поисковую систему со старого адреса страницы на новый. Этот ответ сервера указывает поисковым системам, что страница была перемещена на другой адрес, поэтому старый url можно считать устаревшим. После того, как пройдет переиндексация, поисковые системы «склеят» их и будут предлагать пользователям новый.
Где настраивается 301 редирект
Существует несколько наиболее часто используемых способов настройки 301 редиректов:
— через php условие
Когда браузер получает команду вместо одной страницы открыть вторую. Если Ваш сайт сделан на какой-то CMS, то есть вероятность того, что у неё есть функция редиректа с корня на файл index. В этом случае откройте index.php, который находится в корне Вашего движка и пропишите:
В каких случаях нужно использовать 301 редирект
301 редирект с www на без www (настройка главного зеркала)
или вот такой вариант
301 редирект с без www на www
или вот такой вариант
301 со старого адреса страницы сайта на новый
где test и new-test – ваш варианты страниц
301 редирект со всех страниц одного домена на главную другого домена
где site.ru – сайт, на который будет идти редирект
301 редирект с каждой страницы одного домена на такой же адрес другого
где site.ru – сайт, на который будет идти редирект
Редирект с http на https
Если вы решились переехать на защищенный протокол https, необходимо настроить редирект с помощью этих строк:
или можно попробовать такой вариант
301 редирект со страниц со слешем на без слеша (для всего сайта)
или вот такой вариант
301 редирект со страниц без слеша на слеш (для всего сайта)
или вот такой вариант
301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru
или вот такой вариант
301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)
301 редирект для index.php, index.html или index.htm (например в Joomla), массовая склейка
Редирект с внутренней страницы на главную
Редирект с главной на внутреннюю страницу
Редирект всех внутренних страниц на главную
Редирект с домена РФ на домен RU
301 редирект каталога
Эти решения чаще всего подходят для основных задач, но иногда их необходимо дорабатывать совместно с разработчиками. Связано это с особенностями отдельных cms-систем.
Важная рекомендация: на многих хостингах по умолчанию может работать 302 или другой 3ХХ редирект. Поэтому рекомендуется всегда дописывать в свои правила [R=301,L].
Смена cms-системы и массовое изменение всех адресов страниц сайта
Бывают случаи, когда вы переезжаете на другую cms и адреса ваших страниц меняются следующим образом:
Если они вам все таки не подошли, следует обратиться к разработчиками, которые знают особенности вашего движка и смогут доработать предлагаемые выше варианты.
Почему 301 редирект, а не 302 и другой 30х — опыт из нашей практики
302 редирект — временное перенаправление только пользователей на другой адрес. Поисковые системы в таком случае не понимают что страница переехала, поэтому в поисковой выдаче может быть как старая, так и новая. То есть, этот ответ сервера не указывает поисковым системам, что страница была перемещена на другой адрес. Он говорит, что старая страница временно находится на реконструкции и ее следуют сохранить в индексе.
Эту разницу чаще всего разработчики не понимают, поэтому после редизайна сайта или переезда на новый адрес следует всегда проверять ответ сервера и рекомендуется оформлять его как 301.
Вот случай когда сайт переехал с домена kiev.ua на ua, а чуть позже еще и на защищенный протокол https, но разработчики настроили не 301, а 302 редирект. Результат:
Пока работал такой редирект и поисковые системы считали его временным, в индексе Google и Яндекс находилось 3 копии одного и того же сайта. Что впоследствии привело к очень сильному проседанию позиций в поиске.
Как только 302 редирект был изменен на 301, поисковые системы произвели склейку, исключили дубли из индекса и позиции очень быстро вернулись на прежние места в поиске.
Что такое 301 редирект и как его настроить
При работе с веб-ресурсами возникают ситуации, когда происходит удаление, перенос или изменение url-адреса отдельных страниц или сайта целиком. При этом требуется сохранить индексацию в поисковых системах и перенаправить пользовательский трафик на новый адрес. Для решения этой задачи используется функция под названием 301 Redirect. Это один из инструментов SEO, который позволяет не только избежать ошибок при открытии отдельных страниц, но и добиться корректной работы ресурса. Правильные настройки редиректа дают дополнительную возможность получить синергетический эффект в поисковой оптимизации и увеличить количество органического трафика на релевантные страницы. Рассмотрим более подробно, как происходит настройка редиректа 301.
Что такое переадресация 301
Permanent Redirect 301 применяется с целью организации постоянной переадресации с неактуального доменного адреса или url отдельной страницы на рабочую версию. Редирект может понадобиться в связи с глобальным переносом сайта на другой домен, техническими изменениями в написании адреса, удалением страниц, необходимостью внутренней и внешней перелинковки. Один из вариантов использования перманентной переадресации – редирект с нескольких доменных имен, созданных в разных зонах, на один актуальный адрес. Грамотное использование редиректа позволяет перемещать контент без потерь в поисковой индексации, сохранить и даже увеличить прежний вес и позицию в выдаче.
Настроить код состояния HTTP 301 можно разными способами:
с помощью HTML и PHP;
через панель управления или плагины соответствующей CMS;
при помощи специальных скриптов (программ);
на уровне хостинг-провайдера;
Последний способ является наиболее простым и надежным. О нем чуть позже поговорим подробнее.
Альтернативные методы переадресации
В большинстве случаев постоянная переадресация является более правильным решением, чем временная. На практике это объясняется просто. Предположим, сайт сменил доменную зону, а затем еще и обзавелся защищенным протоколом https. При настройке временной переадресации в индексе Яндекса и Google по одним и тем же запросам появились три версии сайта с пропорциональным проседанием позиций в выдаче. После настройки редиректа 301 на приоритетный url произошло склеивание дублей, робот вернул сайт в топ выдачи.
Не рекомендуется использовать постоянный редирект при временном переносе сайта или наличии серьезных проблем со старым доменным именем. Если адрес забанен или попал под поисковую фильтрацию, смена дислокации с применением переадресации не поможет избавиться от этих ограничений.
В каких случаях используется постоянный редирект 301
Смена доменного имени, перенос сайта. Необходимо произвести тотальную настройку переадресации со старого адреса на новый, чтобы все без исключения запросы к old_site.ru перенаправлялись на new_site.ru.
Изменение написания url определенных страниц в целях SEO-продвижения, смены CMS или по иным причинам. Требуется настроить редирект с site.ru/1hdkr5 на site.ru/page_adress.
Перенос разделов на субдомены. Необходимо сменить адрес www.site.ru/example на example.site.ru.
Для аккумуляции трафика с адресов, купленных в разных доменных зонах, на один приоритетный ресурс.
Исключение дублирующихся страниц из индекса.
Склейка зеркал сайта – вариантов сайта с идентичным контентом, но разным написанием адресов: site.ru, www.site.ru, https://site1.ru и т.д. В этом случае выбирается один приоритетный домен и на него настраивается редирект со всех остальных зеркал.
Удаление ранее существовавшей страницы. В этом случае пользователи обычно видят ошибку 404. Большое количество таких сообщений негативно воспринимается как пользователями, так и поисковиками.
Для быстрого перехода пользователя на мобильную версию ресурса со смартфонов и планшетных устройств.
Создание постоянной переадресации 301 через настройки и плагины CMS
В большинстве популярных конструкторов сайтов и CMS (OpenCart, Joomla!, Битрикс, Wix, Тильда) предусмотрена настройка редиректов с помощью встроенных инструментов. Если сайт создан с помощью WordPress, для настройки переадресации можно воспользоваться следующими плагинами:
Redirection — самый популярный плагин для настройки редиректов. Кроме основной функции обладает следующими возможностями: сбором статистики переадресаций, отслеживанием ошибок 404, поддержкой регулярных выражений.
Safe Redirect Manager — простой плагин, который также поддерживает регулярные выражения, практически не влияет на производительность сайта.
Quick Page/Post Redirect Plugin — еще один удобный инструмент оптимизации. Один из недостатков — отсутствие поддержки регулярных выражений. К ссылкам можно добавлять атрибут «nofollow».
Simple 301 Redirects. Данный модуль обладает одним недостатком – url для переадресации необходимо прописывать вручную.
Для Битрикс кодировка будет выглядеть следующим образом:
В Joomla настройки переадресации производятся через панель администратора в разделе «Компоненты» => «Перенаправление». Здесь можно не только установить правила редиректа, но и отслеживать страницы с битыми ссылками и перенаправлять их на корректные адреса.
Но настроить редирект 301 довольно просто в базовом редакторе.
Найти файл можно через панель управления хостинга либо использовать FTP-клиент. При любом варианте нужно включить отображение скрытых файлов.
Для создания 301 редиректа перейдите в панель управления вашего сайта.
Рекомендуем все условия редирект записывать в блоке IfModule, дабы избежать ошибок при выполнении файла htaccess.
Перед тем как начать прописывать правила перенаправления, необходимо включить механизм преобразований (RewriteEngine) при помощи команды RewriteEngine On.
Хостинги применяют по умолчанию 302 или любой другой 3xx редирект. В связи с этим в правилах используются флаги. Рекомендуем дописывать в своих правилах [R=301,L].
Склейка зеркал сайта (www / без www)
Сайты http://name.site и http://www.name.site для поисковых систем являются разными. А по факту это разные адреса одного сайта.
Если произошла обратная ситуация и необходима переадресация с без «www» на «www», то в файл прописывается:
Редирект с http на https для всего сайта
Если данная конструкция не сработает, попробуйте другой вариант:
Если редирект не работает и в этом случае, попробуйте такой вариант:
В результате пройдет перенаправление на https всех пользователей и поисковых систем.
Постранично
Бывают случаи, когда необходимо создать редирект на https всех страниц, кроме одной. В этом случае используют постраничный редирект:
Для одной страницы
Для редиректа с http на https одной страницы (например page.php), в файл добавьте следующую конструкцию:
Редирект сайта с https на http
Если необходимо сделать 301 редирект всего сайта с https на http, в файл прописывается следующее:
Изменение домена
Редирект на страницу с другим url (без параметров)
Редирект для url (с параметрами)
Если адрес содержит параметр (например, http://name.site/articles.php?section=1, где параметром является «section=1» ), то прописывают следующую конструкцию:
Редирект с index.php на главную страницу
В тех случаях, когда главная страница сайта может быть недоступна по нескольким адресам одновременно, применяют следующую конструкцию:
Редирект со страниц со слешем на без слеша (для всего сайта)
Или более короткий вариант:
Редирект со страниц без слеша на слеш (для всего сайта)
Обратный вариант применяется, когда нужно использовать адреса со слешем.
301 редирект с 404 Not Found
Код 404 Not Found (страница не найдена) присваивается удаленной или несуществующей странице на сайте. Создание постоянного перенаправления с таких страниц актуально для контентных сайтов и крупных интернет-магазинов, где страницы часто удаляются по естественным причинам. Тогда возникает потребность перенаправить посетителей на одну из главных страниц сайта, чтобы они не уходили с ресурса при виде ошибки.
301 редирект для страниц 404 Not Found сделать совсем не сложно. Например, этот код перенаправит со всех 404-страниц на главную:
Однако делать такие редиректы в массовом порядке не рекомендуется, так как это может испортить SEO-статистику всего ресурса.
Пример файла htaccess, после добавления в него редиректов:
точка заменяет произвольный символ
обозначает перечень знаков, совпадающих с буквами a, b, или с
список символов вне указанного диапазона (кроме a, b, с)
указывает на то, что предыдущий знак может повторяться 0 или больше раз
команда найдет идущие подряд символы из заданного набора
приводит к противоположному эффекту
заменяет любой набор символов
ищет все подстроки между кавычками
начало строки (когда используется в начале выражения)
означает конец строки
цифра, буква или подчеркивание _
заменяет любую цифру
может заменить любой знак, кроме цифры
для замены любой цифры
для всех букв от a до z в нижнем регистре
для каждой буквы от A до Z в верхнем регистре
любая буква от a до Z во всех регистрах
Другие способы создания переадресации 301
Через PHP
Данный вариант подойдет тем, кто хорошо разбирается в web-программировании и PHP. Необходимо открыть файл index.php в корне CMS-движка и прописать там:
(в первой строке укажите старый url, а во второй — новый)
ASP-редирект
ASP.NET редирект
Найдите в корне своего сайта файл web.config и вставьте в секцию синтаксис:
ColdFusion редирект
JSP (Java) редирект
Данный способ подойдет для небольшой корректировки простых сайтов. Код можно прописать лишь в одном файле, а сам файл добавить на все нужные страницы, указав:
CGI-скрипт на PERL
Ruby on Rails
Редирект в Nginx
HTML-редирект
Этот способ подойдет для небольших статических сайтов, когда требуется настроить переадресацию для одной страницы. Для этого необходимо добавить специальный мета-тег внутри кода HTML. Пример записи редиректа на другой ресурс после 5-секундной задержки:
Если поставить значение 0 вместо 5, то переадресация на https://livepage.pro произойдет моментально.
Однако для больших сайтов HTML-перенаправление делать сложно и затратно по времени, поэтому лучше отдать предпочтение другому варианту.
Редирект 301 в панелях управления сервера
Большинство панелей управления сервера предоставляют возможность настройки переадресации с кодом 301. Рассмотрим варианты решения этой задачи на примере двух популярных ПУ для VDS.
Cpanel
Нужно перейти в блок «Домены» => «Перенаправления». В появившемся окне выполнить следующее:
В строке «Тип» выбрать «Постоянный 301».
В строке «https://www» из выпадающего списка выбрать домен сайта (например, example.ru).
В строке «Перенаправляет на» указать для домена адрес http://example.ru.
В блоке «Перенаправление www» поставить галочку напротив «Перенаправлять только с www».
Сохранить изменения кликом на «Добавить».
ISPmanager
Автоматическое создание переадресации
При отсутствии знаний и опыта самостоятельной настройки редиректа можно воспользоваться сервисами автоматической генерации:
Проверка корректности настроек 301 редиректа
Самый простой способ проверки переадресации – ручное тестирование. Для этого необходимо вставить в адресную строку браузера url сайта или страницы, с которой настроено перенаправление. Если при открытии будет доступен ресурс, на который настроен редирект, то переадресация выполняется правильно.
Для автоматической проверки можно воспользоваться специальными сервисами:
программой Screaming Frog Seo Spider, способной просканировать весь сайт.
Существует ряд ошибок, которые следует избегать при настройке редирект 301:
использование перенаправлений между страницами сайта без изменения их url в ссылках;
установка временной переадресации вместо постоянной;
неправильный выбор типа редиректа;
перенаправление файла robots.txt;
непонимание разницы между rel=canonical и кодом 301;
редирект на нерелевантный контент;
переадресация, которая не приводит к 200-й странице.
Стоит отметить проблему создания цепочки ссылок, которая может привести к появлению циклического редиректа — ошибки с кодом «ERR_TOO_MANY_REDIRECTS». Наиболее распространенные причины возникновения такого бага – неправильная настройка в процессе создания переадресации, вирусная атака, слишком длинная цепочка редиректов. Не рекомендуется настраивать редирект, содержащий более пяти адресов. Оптимальной является прямая переадресация со старого на новый url.
Заключение
Использование редиректа 301– очень важный способ поисковой и пользовательской оптимизации веб-ресурса. Использовать его следует с осторожностью. Неправильная настройка может привести к сбоям в работе сайта и потере поисковых позиций.