- 301 редирект в .htaccess
- Что такое redirect 301
- Как он работает и чем отличается от других редиректов
- Когда и зачем использовать 301 редирект?
- Настраиваем 301 редирект через .htaccess
- Что такое .htaccess и где его взять?
- 301 редирект с index.php или index.html на главную
- Настройка 301 редирект с нескольких сайтов на один
- 301 редирект с www на без www
- 301 редирект с домена без www на домен с www
- 301 редирект страниц со слэшем и без
- Массовая замена категории через 301 редирект
- 301 редирект не целой категории, а конкретной страницы
- 301 редирект со страницы на страницу
- 301 редирект для url с параметрами
- 301-редирект со страницы без заданного параметра на главную
- Убираем расширения через 301 редирект
- 301 редирект со всех страниц на главную другого домена
- 301 редирект с поддомена на папку
- 301 редирект с HTTP на HTTPs
- Правильный 301 редирект на новый домен
- Ошибки, которые могут возникнуть при настройке 301 редиректа
- Как проверить, что редирект 301 работает правильно
- Популярные вопросы и ответы на них
301 редирект в .htaccess
С помощью 301 редиректа вы можете настроить склейку старых страниц с новыми или перенести сайт на другой домен, убрать многие дубли с сайта и многое другое. Крайне полезная вещь — поэтому нужно научиться делать его правильно!
Что такое redirect 301
301 редирект (ответ сервера HTTP 301 или Moved Permanently) – это способ постоянного перенаправления поисковых запросов и пользователей с одного URL-адреса на другой.
Как он работает и чем отличается от других редиректов
301 редирект является наиболее постоянным и рекомендуемым способом перенаправления поисковых запросов и пользователей с одного URL-адреса на другой. Он работает следующим образом: при запросе браузером страницы, сервер возвращает HTTP-статус 301 и указывает новый URL-адрес страницы в заголовке ответа. После этого браузер автоматически перенаправляет пользователя на новый адрес.
Основные преимущества заключаются в следующем:
- Постоянность: 301 редирект действует бессрочно и рекомендуется поисковыми системами при переезде страниц (так называемая склейка).
- Сохранение ранжирования: при использовании 301 редиректа, поисковые системы сохраняют результаты страницы на новом URL-адресе.
- Удобство использования: настройка 301 редиректа происходит на уровне сервера, что позволяет легко и быстро настроить перенаправление.
Другие виды редиректов, могут быть использованы для временного перенаправления, например:
- 302 редирект: это временный редирект, который сообщает поисковым системам и браузерам, что страница временно перемещена на другой URL-адрес. При использовании этого типа редиректа поисковые системы продолжают индексировать и ранжировать исходную страницу, а не новую.
- 307 редирект: аналогичен 302-му, за исключением того, что при его использовании метод HTTP-запроса не меняется, то есть сохраняется оригинальный метод HTTP-запроса, в отличие от 302 редиректа, который переключается на GET-запрос.
- Meta-редиректы: это редиректы, которые настраиваются внутри кода HTML-страницы с помощью тега и атрибута «http-equiv». Они используются для перенаправления поисковых роботов и браузеров с одной страницы на другую.
Хотя эти редиректы могут быть использованы для перенаправления поисковых запросов и пользователей, рекомендуется использовать 301 редирект в качестве основного способа перенаправления.
Когда и зачем использовать 301 редирект?
Наиболее часто он используется для следующих целей:
- Перемещение сайта на новый домен: позволяет сохранить поисковые позиции и результаты страниц на новом домене.
- При переходе с http на https и других изменений главного зеркала: чтобы склеить копии страниц.
- Устранение дублей: позволяет сделать так, чтобы все дубликаты ссылались на одну корректную страничку.
- Изменение URL-адресов на сайте: при изменении адресов страниц на сайте, 301 редирект позволяет сохранить трафик на страницах и избежать ошибок 404.
- Устранение битых ссылок: при обращении к несуществующей странице сайта, может перенаправлять на главную страницу сайта или наиболее подходящую страницу.
- Мобильная версия: перенаправление пользователей мобильных устройств на соответствующую версию сайта.
- ГЕО: перенаправление пользователей в зависимости от их геолокации на нужный поддомен или папку.
В целом, использование 301 редиректа позволяет сохранить поисковые позиции, ссылочную массу, трафик и результаты страниц на сайте при изменениях в его структуре и содержании.
Настраиваем 301 редирект через .htaccess
Что такое .htaccess и где его взять?
Файл под названием .htaccess находится в главной категории вашего сайта. Это дополнительный конфигурационный файл web-сервера Apache, в котором мы будем указывать правила склейки. Открываем файл блокнотом (рекомендую notepad++ или sublime, чтобы не было проблем с кодировкой). Если у вас их нет — рекомендую обзавестись, а заодно посмотрите мои инструменты для работы.
Файл .htaccess может не отображаться — включите отображение скрытых файлов. И в корне вашего сайта вы его увидите через FTP-клиент.
Наглядно, где лежит у меня .htaccess
Общий шаблон для .htaccess, которым мы будем пользоваться:
Options +FollowSymLinks RewriteEngine On #Здесь указываем правила, которые идут ниже
Все правила записываются в виде:
RewriteCond [Сравнение] [Условие] [Флаги] RewriteCond [Сравнение] [Условие] [Флаги] RewriteRule [Шаблон] [Подстановка] [Флаги]
Теперь непосредственно займемся переадресацией и разберем конкретные примеры.
Я уже писал статью про склейку зеркал сайта, но на всякий случай здесь обобщу, чтобы вам было удобнее пользоваться страницей.
301 редирект с index.php или index.html на главную
Чтобы настроить его вам нужно прописать в вашем файле htaccess следующий код, который будет перенаправлять посетителей с адреса site.ru/index.php на site.ru:
RewriteCond % ^[A-Z]\ /index\.php\ HTTP RewriteRule ^index\.php$ http://site.ru/ [R=301,L]
Если вам так же нужно сделать переадресацию с index.html, то просто в коде выше замените .php на .html
Настройка 301 редирект с нескольких сайтов на один
Если у вас несколько доменов и вы хотите все их перенаправлять на основной сайт, то используем:
RewriteCond % ^vash-sait.com$ [OR,NC] RewriteCond % ^www.vash-sait.com$ [NC] RewriteRule ^(.*)$ http://vash-sait.ru/$1 [R=301,L]
Обратите внимание на первые 2 строки, там указано зеркало в зоне .com, если у вас иная или несколько зон, то добавляем правила. Для редиректа следующего сайта просто повторите блок еще раз.
301 редирект с www на без www
Этот способ я уже описывал ранее, но повторюсь. Для того, чтобы склеить зеркала и выбрать основным домен без www прописываем:
RewriteCond % ^www.site\.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
301 редирект с домена без www на домен с www
Это действие противоположное предыдущему, только основное зеркало здесь www.site.ru:
RewriteCond % ^site\.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
301 редирект страниц со слэшем и без
Это еще один вид дублей, тут мы склеим страницы site.ru/category/ и site.ru/category, как видите, в конце второго урла не стоит слэша:
RewriteCond % !-d RewriteCond % ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L]
Если вам нужно наоборот оставить слэш в конце урла, то вам нужен данный вариант:
RewriteCond % !-f RewriteCond % !(.*)/$ RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]
Если у вас по какой-то причине появились урлы типа site.ru/category//article.html, то юзаем код:
RewriteCond % ^(.*)//(.*)$ RewriteRule . %1/%2 [R=301,L]
где, «//» можно заменить на «—» или любые сдвоенные символы в урле.
Массовая замена категории через 301 редирект
Бывает, что вы переименовали категорию, а за ней закреплены тысячи урлов. Чтобы не состарится во время написания тысяч одинаковых редиректов юзаем:
RewriteRule ^(.*)/old-category/(.*)$ $1/new-category/$2 [R=301,L]
Если у вас категория идет сразу после домена (типа site.ru/category/), то используем другой вариант:
RewriteRule old-category/(.*) /old-category/$1 [R=301,L]
301 редирект не целой категории, а конкретной страницы
Если требуется сделать переадресацию только для адреса http://www.site.ru/category/, но при этом чтобы страница http://www.site.ru/category/page открывалась по старому адресу:
RewriteRule ^category/$ http://www.site.ru/new-category/ [R=301,L]
301 редирект со страницы на страницу
Самый простой редирект со одной страницы на другую или постраничный, для это просто пропишите так:
Redirect 301 /old-post.html http://new-site.ru/new-post.html
или вариант через RewriteRule:
RewriteRule ^old-post.html /new-post.html [R=301,L]
Где old-post.html — это ваша старая страница, а new-site.ru/new-post.html — это новая страница и она может быть на любом домене (включая ваш текущий домен).
301 редирект для url с параметрами
Страницы с параметрами редиректятся сложнее, возьмем пример http://site.ru/page.php?sort=articles. Параметр здесь «sort=articles». Код будет следующим:
RewriteCond % sort=articles RewriteRule .* http://site.ru/page.php? [R=301,L]
Пример с битрикса и страницы http://www.site.ru/dir/index.php?IBLOCK_ID=1&SECTION_ID=123:
301-редирект со страницы без заданного параметра на главную
Перенаправит http://www.site.ru/?abc на главную страницу сайта:
RewriteCond % ^abc$ [NC] RewriteRule ^$ /? [R=301,L]
Убираем расширения через 301 редирект
Убираем .html из url (для удаления .php не забудьте заменить $1.html на $1.php):
Меняем .php на .html в урлах и наоборот (не забываем поменять местами в коде):
RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html
301 редирект со всех страниц на главную другого домена
Стандартный вариант редиректа для подклейки дропов (если нужна не главная — замените URL):
RewriteCond % (.*) RewriteRule ^(.*)$ http://site.ru/ [L,R=301]
301 редирект с поддомена на папку
Был адрес seo.site.ru, но вы решили сменить этот адрес на site.ru/seo. Тогда нужно добавить такой редирект в .htaccess, который находится в корневой папке поддомена seo.site.ru:
RewriteCond % ^seo\.site\.ru$ [NC] RewriteRule ^(.*)$ https://site.ru/seo/ [R=301,L]
301 редирект с HTTP на HTTPs
RewriteCond % !=on RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
Правильный 301 редирект на новый домен
Этот пункт я выделил отдельно, т.к. он больше связан с переносом на другой домен. Тут есть важный момент, это не упустить директиву по правке роботса — она указана на 3 строке кода.
RewriteCond % robots.txt$ [NC] RewriteRule ^([^/]+) $1 [L] RewriteCond % ^site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1 [R=301,L] RewriteCond % ^www.site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1 [R=301,L]
С помощью таких не хитрых махинаций мы избавимся от дублей страниц, тем самым улучшив нашу внутреннюю оптимизацию и соответственно качество сайта.
Ошибки, которые могут возникнуть при настройке 301 редиректа
При использовании редиректа 301 могут возникнуть следующие ошибки:
- Неправильный URL-адрес назначения: если вы указали неправильный URL-адрес для перенаправления, то пользователи будут перенаправлены на неверную страницу. Чтобы избежать этой ошибки, необходимо тщательно проверять URL-адрес назначения перед созданием редиректа.
- Циклический редирект: это происходит, когда две страницы перенаправляют друг на друга, образуя цикл. Это может привести к ошибкам и снижению ранжирования в поисковых системах. Чтобы избежать циклического редиректа, необходимо тщательно планировать свои редиректы и проверять их наличие внимательно.
- Несовместимость HTTP и HTTPS: если ваш сайт использует HTTPS, а редирект настроен на HTTP, пользователи могут столкнуться с ошибкой безопасности и не смогут получить доступ к вашему сайту. Чтобы избежать этой ошибки, убедитесь, что все ваши редиректы настроены на HTTPS.
- Неправильная настройка сервера: если сервер не настроен, редиректы могут не работать. Чтобы избежать этой ошибки, рекомендуется обратиться к специалистам, которые могут помочь с настройкой сервера.
- Непонимание своих действий: если вы не знаете Apache у вас или Nginx, не понимаете устройство файла .htaccess — делайте копию работающего файла. А лучше обратитесь к специалистам.
Как проверить, что редирект 301 работает правильно
Существует несколько способов проверить, что редирект 301 работает правильно:
- Используйте онлайн-инструменты, такие как Bertal (если нужно разово) или PixelTools (если нужно массово + доп. параметры), чтобы проверить, что редирект перенаправляет на правильный URL-адрес и не имеет ошибок (смотрите ответ сервера чтобы был именно 301 и на какой URL перенаправляет).
- Проверьте индексацию новой страницы в поисковых системах. Если страница индексируется и отображаться в поисковых результатах (старый URL при этом исчезает из выдачи), это может указывать на то, что редирект работает правильно.
- Проверьте файл журнала сервера, чтобы убедиться, что редиректы не вызывают ошибок у пользователей и ботов или проблем в работе сервера.
Популярные вопросы и ответы на них
301 редирект — постоянный, т.е. склейка, с передачей веса и всех достигнутых результатов на старой странице. Произойдет замена URL-адреса в индексе.
А 302 — временный. Т.е. поисковая система будет ждать, что вы вернетесь в итоге на старый URL.
Он может быть прописан в .htaccess или в конфигурационном файле hpptd.conf (скорее всего у вас не будет к нему доступа) или index.php (если речь о редиректе на PHP).