Правильный redirect 301 для SEO в Nginx

Декабрь, 17th 2016Рубрика: Web 13082 Подписаться на комментарии по RSS

Любой вебмастер не раз сталкивался с необходимостью сделать 301 редирект (при изменение адреса страницы, склейке доменов, удалении дублей). Один из самых простых способов задания 301 редиректа — использовать механизм mod_rewrite, позволяющий переобразовывать URL «на лету».

Данная шпаргалка содержит набор директив, флагов и переменных, подсказки по синтаксису регулярных выражений, используемых mod_rewrite, а так же примеры наиболее популярных шаблонов.

Синтаксис регулярных выражений
^ начало строки
$ конец строки
. любой одиночный символ
(a|b) «a» или «b»
(…) группа
[abc] «a» или «b» или «c»
[^abc] не «a», не «b» и не «c»
s Пробел
a? 0 или 1 символ «а»
a* 0 или больше «а»
a*? 0 или больше «а», нежадный
a+ 1 или больше «а»
a+? 1 или больше «а», нежадный
a{3} ровно 3 символа «а»
a{3,} 3 или больше «а»
a{3,6} от 3 до 6 «а»
a{3,6}? от 3 до 6 «а», нежадный
!(…) Префикс «не» (действует если шаблон не подходит)
Флаги RewriteCond
NC Не учитывать регистр
OR Комбинировать по принципу «или»
Флаги RewriteRule
R[=code] Редирект, опционально с кодом
F Доступ запрещен (посылает 403 заголовок)
G «Мертвая» страница (удалена)
P Прокси
L Последнее правило
N Следующий круг
C Цепочка
T=mime-type Установить MIME-тип
NS Пропустить внутренний подзапрос
NC Не учитывать регистр
QSA Добавить строку запроса
NE Не экранировать при выводе
PT Пропустить через следующий
S=x Пропустить следующие х правил
E=var:value Установить переменную окружения
Коды заголовков перенаправления
301 Перенесен постоянно
302 Перенесен временно
403 Доступ запрещен
404 Страница не найдена
410 «Мертвая» страница
Переменные: HTTP заголовки Переменные: время
%{HTTP_USER_AGENT} %{TIME_YEAR}
%{HTTP_REFERER} %{TIME_MON}
%{HTTP_COOKIE} %{TIME_DAY}
%{HTTP_FORWARDED} %{TIME_HOUR}
%{HTTP_HOST} %{TIME_MIN}
%{HTTP_PROXY_CONNECTION} %{TIME_SEC}
%{HTTP_ACCEPT} %{TIME_WDAY}
%{TIME}
Переменные: запрос Переменные: сервер
%{REMOTE_ADDR} %{DOCUMENT_ROOT}
%{REMOTE_HOST} %{SERVER_ADMIN}
%{REMOTE_IDENT} %{SERVER_NAME}
%{REQUEST_METHOD} %{SERVER_ADDR}
%{SCRIPT_FILENAME} %{SERVER_PORT}
%{PATH_INFO} %{SERVER_PROTOCOL}
%{QUERY_STRING} %{SERVER_SOFTWARE}
%{AUTH_TYPE}
Переменные: специальные Директивы
%{API_VERSION} RewriteEngine
%{THE_REQUEST} RewriteOptions
%{REQUEST_URI} RewriteLog
%{REQUEST_FILENAME} RewriteLogLevel
%{IS_SUBREQ} RewriteLock
RewriteMap
RewriteBase
RewriteCond
RewriteRule

301 редирект. Популярные шаблоны

Для того чтобы нижеизложенные шаблоны работали нужно перед их использованием прописать в файле .htaccess директивы для модуля mod_rewrite:

Options +FollowSymLinks RewriteEngine On RewriteBase /

Склейка домена (префикс www)

www.example.com и example.com в глазах поискового работа — абсолютно разные сайты, каждый со своими показателями. Для того чтобы не распылять вес, склеиваем эти адреса

Редирект с адреса www на адрес без www

RewriteCond %{HTTP_HOST} ^www.(.*) [NC] RewriteRule ^(.*)$ http: // %1/$1 [R=301,L]

Редирект с адреса без www на адрес с www

RewriteCond %{HTTP_HOST} !^www.(.*) [NC] RewriteRule ^(.*)$ http: //www .%1/$1 [R=301,L]

Зачастую главная страница вашего сайта доступна по нескольким адресам: example.com/ и example.com/index.php или example.com/index.html. Для склейки таких дублей, используем следующий шаблон:

Склейка индексной страницы с корнем сайта

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index .php HTTP/ RewriteRule ^index.php$ http: //example .com/ [R=301,L]

Склейка поддомена и папки

Иногда возникает необходимость сделать 301 редирект с поддомена на папку сайта. Например у вас есть страница category.example.com/page/ и вам нужно склеить ее с дублирующей страницей example.com/category/page/. Прописывем в файле .htaccess поддомена:

Редирект с поддомена на папку основного домена

RewriteCond %{HTTP_HOST} ^category.example.com [OR] RewriteCond %{HTTP_HOST} ^category.example.com RewriteRule ^(.*)$ http: //example .com /category/ $1 [L,R=301]

При необходимости наоборот перенаправить с папки на поддомен:

Редирект с папки основного домена на поддомен

RewriteCond %{HTTP_HOST} ^example.com$ [NC] RewriteRule ^category/(.*)$ http: //category .example.com/$1 [R=301,L]

Редирект с одних расширений файлов на другие

Если вам необходимо сменить расширение файла в адресе (например page.html на page.php) или убрать его совсем:

RewriteRule ^(.*).html$ $1.php [R=301,L]

Редирект на другой сайт

При создании зеркала сайта либо переезде на новый домен, для склейки и перенаправления используем следующую конструкцию:

RewriteCond %{HTTP_HOST} ^oldsite.com RewriteRule ^(.*)$ http: //newsite .com/$1 [R=301,L]

Все страницы домена oldsite.com будут перенаправлены на соответствующие страницы newsite.com.

301 Редирект динамических страниц

При модернизации динамического сайта и создании ЧПУ-адресов часто возникает необходимость перенаправить старые страницы с параметрами ID на новые с ЧПУ. Например, чтобы переадресовать страницу вида http://example.com/page.php?id=13 на новую страницу http://example.com/new-url/, используется следующая конструкция:

RewriteCond %{QUERY_STRING} ^ id =13$ RewriteRule ^ /page .php$ http: //example .com /new-url/ [L,R=301]

Добавляем слеш в конце адреса

Если у вас на сайте реализованы ЧПУ адреса тем или иным способом, то вероятно ваши ссылки могут работать либо со «/» на конце адреса либо без него одинаково. Добавим однозначности и добавим слеш ко всем адресам.

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*[^/])$ /$1/ [R=301,L]
image
Bitrix: Не удалось обнаружить код вызова компонента
image
Как найти вирус на сайте
Прилетело предупрежение за «кликбейт» на Дзене
Движок для сайта-визитки Kandidat CMS
Первый HTML5-редактор для создания баннеров от Google
Лучший движок для блога. На какой CMS остановить свой выбор?

В данной статье рассмотрим простые шаги по установке редиректа (переадресации) с одной страницы сайта на другую (одного URL на другой).

В сети много информации по переадресации страниц. Однако, у неискушенного в строении сайтов или SEO оптимизации читателя может остаться большое количество вопросов по самой процедуре.

Как ее выполнять? С помощью какого ПО? Чего необходимо избежать в ходе процесса?

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

Мы рассмотрим следующие моменты:

Место, где прописываем редиректы

Большинство современных серверов используют ПО Апач (Apache). В таком случае переадресация выполняется с помощью файла .htaccess, который находится в корне сайта (чаще всего это папка public_html).

Заходить на хостинг будем с помощью бесплатной программы FileZilla.

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

Итак, вы вошли в хостинг сайта и открыли папку public_html, если она у вас корневая. Если ее нет, то эту и другую информацию о вашем сервере вы можете запросить у хостинг-провайдера.

Там увидите некоторое количество папок, сразу после которых (но не всегда) идет файл .htaccess.

Именно он нам и нужен.

Перетяните его в левое окно:

 Теперь он скопировался на ваш ПК. Запомните директорию, в которой он лежит.

О мерах предосторожности

Когда речь идет о .htaccess – меры предосторожности не пустой звук. Если у Вас маленький опыт по работе с ним, то прочтите эту главу целиком.

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

Чтобы Ваш ресурс не выпал из строя, перед тем как что-то менять придерживайтесь следующих простых правил:

  • Несмотря на то, что .htaccess открывается стандартным блокнотом Windows, никогда не используйте этот метод. Его следует открывать, редактировать и сохранять только с помощью специализированных текстовых редакторов, одним из которых является бесплатная программа Notepad++. С помощью нее вы можете редактировать файл .htaccess и другие системные файлы.

  • Перед любыми манипуляциями с файлом .htaccess сохраните его в отдельную папку, которую можно легко создать, кликнув правой кнопкой мыши по левой части окна, далее «Создать каталог».
  • Теперь о работе с самим файлом. Открываем программу Notepad++. В ней «Файл» — «Открыть». Находим и открываем наш файл .htaccess. Содержимое файла (директивы) может выглядеть по-разному. Это зависит от движка сайта, его настроек, наличия или отсутствия ssl сертификата и многого другого. Директивы могут занимать одну строчку в файле или несколько, могут занимать 30 строчек и более или их может не быть вообще. Для примера, рассмотрим (только с ознакомительной целью) содержимое (директивы) одного из файлов сайта на WordPress.
  • Блок №2 отвечает за подключение кэша (сохраняет информацию) в браузере. Эти директивы указывают время хранения изображений, служебных и других файлов. Из комментариев, идущих после знака # можно легко понять на какой срок настроена каждая директива.

Из 3-го пункта необходимо вынести два правила:

  1. В файле .htaccess может быть разное содержимое как по объему файла так и количеству директив. Содержимое файла лучше никогда не трогать, если у Вас нет соответствующего опыта.
  2. Редиректы ссылок и страниц всегда прописывайте в конце содержимого файла. В нашем примере здесь:

Как прописать редирект

В предыдущей главе мы частично затронули процедуру установки редиректа с внутренних страниц сайта.

Почему с внутренних?

Открываем файл .htaccess через программу Notepad++, далее пролистываем документ в самый низ, если в нем большое содержимое, устанавливаем курсор в самом конце и отступаем одну строку вниз (все это подробно описано выше).

Редирект следующих страниц прописывайте с новой строки.

Не забывайте про пробелы. Часто по их вине возникают ошибки, из-за которых редирект не работает. Всего должно быть 3 пробела.

Другие редиректы

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

Вторая половина статьи будет интересна более продвинутым пользователям. В ней рассмотрим иные способы редиректа страниц, переход с www версии на версию без www, с http:// на https:// и другие.

Операторы регулярных выражений

Директивы .htaccess состоят из спецсимволов и модификаторов. Для лучшего понимания материала, я приведу основные:

Спецсимволы:

Модификаторы:

Больше подробностей об этих значениях читайте здесь.

Рассмотрим действие символов и модификаторов

Редирект с www на без www

С помощью RewriteEngine On мы включаем модуль mod_rewrite а

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

Если Вам не подошел тот или иной редирект, то смело обращайтесь в службу поддержки вашего хостинга. Хорошие хостинговые компании помогают своим клиентам настроить правильный вариант редиректа, исходя из настроек сервера. И делают это бесплатно.

Редирект с без www на www

Если ваш сайт перешел с html на php

Удаление или добавление слеша (/) в конце

Удаление

Добавление

Редирект каталога

Прописывать редиректы по одному – это утомительно. Если на вашем ресурсе поменялся каталог какого-нибудь раздела(ов), то можно сэкономить время и сделать редирект всех ссылок, относящихся к этому каталогу. Для этого понадобится прописать всего одну строку:

RewriteRule   ^(.*)/oldcatalog/(.*)$    $1/newcatalog/$2 [R=301,L]

Если каталог находится сразу после домена (site.com/old-catalog/), то строка выглядит еще проще:

RewriteRule    old-catalog /(.*)   / old-catalog /$1  [R=301,L]

Редирект с поддоменов (субдоменов) на основной

Часто возникает ситуация, когда необходимо сделать редиректы с поддомена(ов) на основной домен. Например, сайт на поддомене не оправдал ожидания и его решили закрыть, но трафик на него еще идет. В этом случае помогут такие строки в .htaccess:

Удаление нескольких слешей и тире

Продолжаем борьбу с дублями на нашем ресурсе. Если в урлах страницы появятся лишние тире или слеши, то желательно провести их склейку:

Склейка слеша:

Склейка тире:

Редирект на нижний регистр

Сейчас нередки сайты, где изначально в доменном имени присутствуют заглавные буквы. Например, SiTe.com. В таком виде они могут показываться в поиске. Однако, большинство сайтов по-прежнему используют буквы в нижнем регистре для доменного имени.

Таким сайтам можно сделать редирект на нижний регистр:

Переезд на новый домен

Иногда может понадобится переезд со старого доменного имени на новое. Лучшая стратегия переезда  — это учесть пожелания основных ПС Яндекса и Гугла, сделав постраничный переезд.

Для этого в .htaccess прописываем:

В файле robots.txt на старом сайте:

Перевод сайта с http:// версии на https://

Сейчас все больше сайтов устанавливают ssl сертификаты, переходя с http:// на https://. Последние не создают проблем при отображении сайта в браузере и дают некоторую степень защиты информации посетителя на вашем ресурсе. Для перехода можно использовать следующие директивы:

Если это правило не подойдет, то обратитесь в вашу хостинг-компанию.

Если бы в мире SEO был собственный «ад Данте», на последнем его кругу, вмёрзшими в ледяное озеро, томились бы оптимизаторы, плодящие дубли на сайтах. Это «грех» в SEO входит в число самых тяжёлых. Все усилия по продвижению страницы «канут в Лету», если в индексе поисковика присутствует её дубликат.

Эффективным инструментом борьбы с дублями является 301 редирект. Статья расскажет, как проверить 301 редирект и какими способами его можно настроить на сайте.

Содержание

301 редирект — постоянное перенаправление с одной страницы на другую. За счёт 301 редиректа мы сообщаем поисковику, что рабочую страницу необходимо проиндексировать, а перенаправляемую — выбросить из индекса.

Типичный пример использования 301 редиректа — перенаправление HTTP-страницы на HTTPS. Попробуйте сами: вбейте в адресную строку браузера http://www.web-dius.ru. Если не станете отводить глаз от адресной строки, обнаружите, что некоторое время (буквально долю секунды) браузер будет пребывать в замешательстве, потом выдаст страницу https://www.web-dius.ru — не ту, которую вы хотели получить, а ту, которую мы захотели показать. «Правильную», с защищённым протоколом.

Что происходит во время перенаправления и почему браузер оказывается в замешательстве? Происходит своего рода диалог между сайтом и браузером. Сайт посредством 301 редиректа сообщает браузеру:

Страница X перемещена навсегда! Не надо больше её показывать. Лучше покажи человеку страницу Y.

Браузер отвечает:

Нет проблем! Тогда я действительно лучше покажу страницу Y.

Поскольку сайт и браузер «сговорились», у пользователя нет шансов увидеть «спрятанную» страницу X, пока редирект с неё не удалят.

Не стоит злоупотреблять 301 редиректами и ставить их без необходимости. Помните: страничка через редирект загружается дольше, чем без редиректа. Долгое время загрузки веб-страницы — отрицательный фактор ранжирования для поисковых систем.

Один пример использования 301 редиректов уже рассмотрели — когда происходит склейка при переезде на SSL-сертификат. Постоянное перенаправление настраивается и в иных случаях:

  • Когда перерабатывается структура URL-адресов. URL-адрес рекомендуется выстраивать таким образом, чтобы он отражал путь до страницы в рамках сайта и был ЧПУ (человеко-понятным). Однако на некоторых сайтах можно встретить подобные адреса: https://habr.com/ru/post/541632/. Если захотите поменять такой адрес на ЧПУ — с использованием слов на транслите — придётся обращаться к 301 редиректу.
  • Если дубли возникают стихийно. Увы, у некоторых CMS есть склонность самостоятельно плодить дубликаты страниц с параметрами на конце URL. От таких дублей SEO-шнику тоже приходится избавляться посредством перенаправления. Хотя это — «борьба с ветряными мельницами», пока не отыщешь и не устранишь изъян в «движке».
  • При переносе разделов на поддомены. Есть гипотеза, что блог при коммерческом сайте выше котируется у поисковиков, если находится на поддомене. Если задумаете перенести «информационку» на поддомен, не обойтись без 301 редиректов.
  • Если нужно просто удалить страницу. Когда может понадобиться? Когда информация на странице устарела. Скажем, вы продаёте онлайн-кассы, и одна страни чка на сайте посвящена кассам для ЕНВД. Вряд ли есть смысл сохранять эту страницу в 2021 году — ЕНВД отменён. Предвосхищая ваше возражение, отметим, что сберечь вес этой страницы, перенаправив её, например, на страницу, предлагающую кассы для патентной системы налогообложения, не получится — поисковая система не дурак. От неактуальной страницы избавляемся, перенаправляя на 404.

Ну и, конечно, 301 редирект необходим для настройки главного зеркала сайта. Скажем, если главное зеркало — без www, придётся установить редирект с www-страницы (www.site.ru → site.ru). Если наоборот — сделать редирект на www-страницу (site.ru → www.site.ru). Также нужно настроить перенаправление со страницы /index.php на главную (site.ru/index.php → site.ru) и выбрать, оставить ли главное зеркало со слэшем на конце (site.ru → site.ru/) или без (site.ru/ → site.ru). Задача сводится к следующему: посредством редиректов добиться, чтобы в индексе не было двух версий главной страницы сайта.

301 редирект — наиболее распространённый, но не единственный. Есть редиректы и других видов:

  • 302 — является временным в отличие от 301 (который постоянный). 302 редирект даёт поисковой машине сигнал, что на странице-доноре пока не стоит «ставить крест». Обе страницы присутствуют в индексе, передачи веса и внутренних метрик страницы-донора не происходит.
  • 307 — тоже временный. Используется крайне редко и только когда контент «переезжает» на непродолжительное время — например, на время техобслуживания сайта.
  • Meta Refresh — отложенный редирект, который происходит не на уровне сервера, а непосредственно на сайте. Отложенный — значит, перенаправление осуществляется только спустя несколько секунд. Пользователь в течение этих секунд обычно видит текст наподобие такого:

Если переход не произошёл через n секунд, нажмите здесь

Вы точно могли видеть редирект типа Meta Refresh, если пользовались антиплагиатом Text.ru. Когда пытаешься пройти по ссылке на страницу, с контентом которой сервис нашёл совпадения, видишь такую картину:

Text.ru использует редирект типа meta refresh

Перенаправление происходит спустя 20 секунд.

Редирект Meta Refresh — не есть хорошо для SEO. Google прямо говорит, что такая практика противоречит правилам поисковой системы.

  • Rel=»canonical». Вообще тег каноникал не является редиректом, поскольку перенаправления не происходит. Пользователь видит страницу с дублирующимся контентом, хотя в индексе она не находится. Тег каноникал служит для передачи веса и накопленных характеристик со второстепенной страницы на главную. Обычно rel=»canonical» ставят на страницы пагинации. Роль главной играет первая страница в каталоге, остальные лишь «сливают» ей свой вес.

В 90% случаев SEO-специалистами используется 301 редирект.

Как правило, ломать голову или писать код для установки редиректа необходимости нет. Большинство известных CMS (например, Bitrix) позволяют сделать перенаправление за счёт встроенного инструментария. WordPress отличился не с лучшей стороны — на «движке» по умолчанию нет функционала для простановки редиректа. Приходится скачивать и ставить плагины для настройки 301 редиректа — например, Redirection.

Ещё один распространённый способ — сделать редирект через htaccess. Htaccess —конфигурационный файл веб-сервера Apache. Вы почти наверняка найдёте его в корня сайта через панель управления хостинга. Ну а если не найдёте — просто создайте при помощи блокнота.

Файл htaccess в файловом менеджере хостинга Timeweb

Ниже — фрагменты кода для установки самых популярных редиректов в htaccess.

Перенаправить с одной страницы на другую:

Перенаправить весь сайт с http на https:

Создавать редирект можно лишь после установки защищённого сертификата.

Постраничный редирект 301:

Постраничный редирект пригодится, если, например, нужно сделать перенаправление со всех страниц, кроме одной.

Редирект в htaccess с www на без www:

С «без www» на «с www»:

Редирект на главную с /index.php:

В примерах вместо site.com нужно вставить адрес продвигаемого сайта.

Настройка 301 редиректа для кириллического домена — более сложная задача. Такой домен нельзя вставлять в код редиректа в формате по умолчанию. Необходимо перевести запись домена в формат Punycode с помощью любого конвертера — скажем, 2ip. После конвертации запись выглядит примерно так: xn—80aswg.xn—p1ai (исходник — сайт.рф).

Есть уйма других способов сделать 301 редирект:

  • Через PHP. Настроенный через PHP 301 редирект работает на уровне сервера. Он медленнее перенаправления через htaccess. Однако в частных случаях удобнее — например, когда необходимо прописать редиректы на десятках страниц. Настраивается в файле index.php, размещённый там, где htaccess.
  • Через мета-тег в HTML. Можно настроить в HTML 301 редирект типа meta refresh. Нужно внести в код HTML скрипт редиректа:

Обратите внимание на цифру 10. Это длительность задержки перед редиректом в секундах. Если поставить 0, перенаправление будет немедленным.

  • Редирект в Nginx. Если используете не Apache, а сервер типа Nginx, роль файла htaccess играет nginx.config. В нём нужно прописывать редирект. Код добавляется в секцию server.
  • Через JavaScript. JavaScript, как HTML-тег meta refresh, используется для настройки отложенных редиректов. У метода с использованием JSP есть критический недостаток: если пользователь отключил в браузере JavaScript, перенаправления не будет.
  • ASP.NET-редирект. Добавляется путём внесения кода в файл web.config, который можно найти в корне сайта.

Если выше вы не нашли кода, который нужен конкретно в вашей ситуации, можете сгенерировать сами. Используйте один из онлайн-сервисов:

  • Сервис Rapidtables. Позволяет генерировать код для редиректов типов JSP, PHP, HTML, ASP.NET, Apache (для htaccess). Из минусов — нет шаблонов для распространённых случаев (например, для перевода сайта на HTTPS).
  • Генератор от BeamUsUp. Удобная прога с большим количеством шаблонов. Из минусов — создаёт коды для редиректов только в htaccess и не переведена на русский.
  • Сервис Aleyda Solis. Набор инструментов от самой известной представительницы прекрасного пола в мире SEO. Абсолютный аналог генератора BeamUsUp.
  • Инструмент Seo-Zona. Делает коды редиректов для PHP, HTML, JavaScript, ASP.NET, Apache. Шаблонов нет, и это плохо — генерировать код для массовых редиректов проблематично.
  • Сервис Iksweb. Функциональный инструмент для создания htaccess-файла на русском языке.

Если ваша ситуация стандартна — например, когда хотите сделать код для редиректа страницы с www на страницу без www — воспользуйтесь программами BeamUsUp или Алейды Солис. Когда собираетесь сделать редирект не через htaccess, применяйте сервисы Rapidtables и Seo-Zona. А вот если серверы вашего сайта на Nginx, вы можете воспользоваться этим конвертером, чтобы преобразовать коды перенаправлений для htaccess в редиректы для nginx.config.

Проверку редиректа 301 легко выполнить вручную — просто попытавшись перейти на страницу, которая перенаправляет. Для пущей уверенности можно использовать специальные сервисы:

  • Redirect Checker.
  • PR-CY Info.
  • Bertal.

Рекомендуем последний, он самый информативный. Показывает, в частности, тип сервера, на котором лежит сайт.

Перечисленные сервисы не подойдут для массовой проверки URL-адресов. Справиться с этой задачей поможет инструмент Internet Marketing Ninjas. За раз можно проверить до 1000 урлов. Хотя «трушные» SEO-шники, конечно, используют для этой цели Screaming Frog SEO Spider. Достаточно упорядочить по убыванию данные по колонке Status Code — и все страницы с редиректами окажутся вверху таблицы.

Screaming Frog SEO Spider

Первое и самое важное — избегайте цепочек редиректов. Цепочка редиректов (множественные редиректы) — ситуация, когда страница А перенаправляет на страницу Б, которая в свою очередь перенаправляет на страницу В. Это плохо по ряду причин:

  • Множественные редиректы «пожирают» краулинговый бюджет поисковой системы.
  • Конечная страница из-за нескольких перенаправлений загружается долго.
  • При редиректе передаётся не весь PageRank, а только часть. Это подтвердил Джон Мюллер из Google. Сколько PageRank останется, когда дело дойдёт до конечной страницы при цепочке редиректов? Можно предположить, что немного.

Еще одна типичная ошибка при простановке редиректа — перенаправление на страницу с нерелевантным контентом. Например, когда страница продавала онлайн-кассы, а мы сделали с неё редирект на страницу, продающую банковские пин-пады. Это чистой воды «читерство», которое поисковая система, естественно, распознаёт и не прощает.

Редирект 301 сейчас — настолько популярный инструмент, что появилось даже специальное направление SEO-деятельности «продвижение 301 редиректами». Это когда отыскиваешь домены, которые по тематике близки продвигаемому сайту, покупаешь их и с них проставляешь редиректы.

Поручиться за эффективность такого метода мы не можем. Считайте нас ретроградами, но мы рекомендуем десять раз подумать, прежде чем сделать редирект. Поисковые системы очень тяжело «переваривают» 301 редиректы. По словам Джона Мюллера, поисковику может потребоваться до 1 года, чтобы полностью распознать перемещение страницы и перераспределить вес.

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

Будьте, пожалуйста, внимательны при редактировании файла .htaccess! При сохранении такого файла в кодировке UTF-8 в нём не должно присутствовать BOM-сигнатуры. Для редактирования файла .htaccess и других конфигурационных файлов мы рекомендуем использовать не «Блокнот» Windows, а специальные текстовые редакторы, например Notepad++.

Файл .htaccess располагается в корне сайта.

Его действия распространяются на текущий каталог и на все вложенные каталоги. Т.е. у владельцев сайтов есть возможность воздействовать только на работу своего проекта, не мешая работе всего сервера. Если этот файл отсутствует, то его можно создать с помощью любого блокнота. Главное, чтобы название файла было “.htaccess” – без форматов .txt, .doc и т.д.

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

Чуть ниже мы рассмотрим все распространенные варианты редиректов через .htaccess, а для начала ознакомимся с опциями и правилами.

Чтобы иметь возможность работать с редиректами нужно включить модуль ReWriteEngine. Для этого необходимо прописать две строчки кода (желательно в самом верху файла .htaccess):

Options +FollowSymLinks RewriteEngine On

Разместите эти строки в самом верху файла .htaccess, чтобы иметь возможность работать с директивами модуля mod_write.

Также на хостинге должны быть включены модули mod_alias (для поддержки Redirect, RedirectPermanent и RedirectMatch).

Содержание Интересная статья:  Как установить SSL-сертификат с HTTPS соединением на свой сайт?

Правила настройки Redirect, RewriteRule и RewriteCond

Директива Redirect в htaccess

Синтаксис Redirect:

Redirect [status] /откуда http://куда_полный_адрес

Redirect устанавливает прямой редирект с одной страницы на другую.

В status пишут код редиректа. Является необязательным параметром. Чаще всего пишут 301, что сигнализирует о постоянном смене адреса страницы.

Важно, чтобы страница «откуда» была прописана в формате без указания полного адреса сайта, но с указанием полного относительного адреса URL начиная со слэша “/” (т.е. с корня сайта). Страницу куда идет редирект нужно писать полностью, т.е. абсолютный адрес страницы URL (т.е. с названием домена и протокола http или https).

Например:

Redirect 301 /oldpage.php https://htaccess.ru/newpage.php

Можно также писать по другому

RedirectPermanent 301 /oldpage.php https://htaccess.ru/newpage.php или

Redirect permanent 301 /oldpage.php https://htaccess.ru/newpage.php

Директива RewriteRule

Директива RewriteRule устанавливает правила перехода. Синтаксис следующий:

RewriteRule Шаблон Подстановка [коды]

  • При внешнем редиректе меняется урл адреса в строке браузера – “[R=301,L]”
  • При внутреннем – не меняет урл адреса в строке браузера – “[R=301]” или “[L]”

Директива RewriteCond

Директива RewriteCond определяет условия при котором выполняется правила в RewriteRule.

RewriteCond Сравниваемая_Строка Условие

Например, этими условиями могут быть браузер пользователя, IP-адрес, заголовок и т.д.

Директива RedirectMatch

Директива RedirectMatch в htaccess аналогична Redirect с той лишь разницей, что позволяет записывать регулярные выражения.

RedirectMatch [status] Откуда Куда

Примеры настройки 301 редиректов в htaccess

Ниже даны наиболее используемые правила настройки файла .htaccess для 301-редиректа. Лучше размещать все правила после двух строк:

Options +FollowSymLinks RewriteEngine On

Комментарий в файле htaccess обозначается символом решётка «#» в начале строки

# Текстовый комментарий, данная строчка не будет обрабатываться.

301-редирект с домена без WWW на домен с WWW префиксом

RewriteCond %{HTTP_HOST} ^site.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

С домена с WWW префиксом на без

RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Для HTTPS-версии:

RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTP} =on RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

Стандартный 301-редирект с одной статической страницы на другую

Redirect 301 /was.php http://www.site.ru/new.php

При этом в файле htaccess, новый адрес указывать необходимо полностью с http и доменным именем.

В ряде случаев полезен редирект через RewriteRule 

RewriteRule ^dir /dir-new/$1 [R=301,L]

Настройка 301-редирект для страницы с GET параметрами 

Скажем, адрес страницы имеет вид: http://www.htaccess.ru/dir/index.php?IBLOCK_ID=1&SECTION_ID=111 тогда в htaccess для настройки 301 редиректа на новый адрес, необходимо использовать следующее правило:

Интересная статья:  Дубли страниц на сайте

RewriteCond %{QUERY_STRING} ^IBLOCK_ID=1&SECTION_ID=111$ [NC] RewriteRule ^dir/index.php$ /new/sef/? [R=301,L]

Если один (или несколько) из GET параметров не задан(ы) или может иметь произвольное значение (в нашем примере это SECTION_ID), можно использовать следующий код:

RewriteCond %{QUERY_STRING} ^IBLOCK_ID=1&SECTION_ID=(.*)$ [NC] RewriteRule ^dir/index.php$ /new/sef/? [R=301,L]

Убираем все GET-параметры после знака вопроса (?)

RewriteRule (.*) $1? [R=301,L]

Располагать после: RewriteBase /

301-редирект со страницы без заданного параметра в корень

Если адрес имеет следующий вид: http://www.htaccess.ru/?abc то для редиректа подойдет последовательность строчек:

RewriteCond %{QUERY_STRING} ^abc$ [NC]  RewriteRule ^$ /? [R=301,L]

301-редирект для конкретного файла, а не целой папки 

Если в файле htaccess требуется настроить редирект только для адреса http://www.htaccess.ru/dir/, но при этом чтобы страница http://www.htaccess.ru/dir/index.php?IBLOCK_ID=1 открывалась по старому адресу, необходимо использовать спецсимвол $ в правиле.

RewriteRule ^dir/$ http://www.htaccess.ru/new-dir/ [R=301,L]

Как быть с доменами в зоне РФ? 

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

301-редирект с домена на домен 

RewriteCond %{HTTP_HOST} ^old-site.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

И для домена в зоне РФ:

RewriteCond %{HTTP_HOST} ^xn-....xn--p1ai$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

Настройка редиректа на папки со слешем в конце / 

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !..{1,10}$ RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ http://www.site.ru/$1/ [L,R=301]

Настройка редиректа на папки без слеша (убираем слеш в конце) 

RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ http://www.site.ru/$1 [R=301,L]

301-редирект с домена на папку на другом домене 

RewriteCond %{HTTP_HOST} ^si-te.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/si-te/ [R=301,L]

Редирект со всех файлов домена, кроме папки администратора bitrix 

RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301] RewriteRule ^(.*)$ http://www.newsite.ru/new/ [L,R=301]

Редирект всех файлов в папке на заданный файл 

RewriteRule ^dir(.*)$ /new-file.php [L,R=301]

Редирект файлов из заданной папки кроме, определенного файла 

RewriteRule ^dir/no-file.html /no-file-new.html [L,R=301] RewriteRule ^dir(.*)$ /all.php [L,R=301]

Смена страниц с html расширения на php расширение 

RedirectMatch 301 (.*).html$ http://www.new-site.ru$1.php

Перенос картинок / изображений из папки /img/ на поддомен 

RewriteRule ^img/(.+).jpg$ http://img.domain.ru/$1.jpg [R=301,L]

Задание типа индексной страницы (php, html, htm и другие) 

Указывается порядок загрузки типов индексного файла, лежащих в корне каталога.

DirectoryIndex index.html index.php index.htm index.shtml

Редирект с индексной страницы php на саму папку (корень) 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/ RewriteRule ^index.php$ http://www.site.ru/ [R=301,L] 

Для всех индексных страниц на сайте: RewriteRule ^(.*)index.php$ http://www.site.ru/$1 [R=301,L]

Редирект с поддомена на основной домен второго уровня 

RewriteCond %{HTTP_HOST} ^test.site.ru$ [NC] RewriteRule ^(.*)$ http://site.ru%{REQUEST_URI} [R=301,NC,L,QSA]

Редирект для заданного файла в различных директориях (папках) 

RewriteRule [^abc]/unique-file.html /unique-file.html [R=301,L]

Код позволяет поставить 301-редирект со всех папок вида http://htaccess.ru/***/uniqe-file.html на один файл в корне /unique-file.html. Бывает полезен при переделке сайта и изменении ссылок.

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

RewriteRule ^testovyi/test/?$ /studio/news/detail.php?ID=230354&PAGEN_2=11 [NC,L]

Код позволяет создать копию страницы с относительным адресом /studio/news/detail.php?ID=230354&PAGEN_2=11 по адресу /testovyi/test/

Интересная статья:  Каноническая страница rel=»canonical»

301-редирект с HTTPS-версии на HTTP 

RewriteCond %{HTTPS} "on" RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

Позволяет устранить наличие дублей URL с HTTPS в индексе поисковых систем.

Перенос сайта на версию с HTTPS (для всех страниц) 

RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTP} =on RewriteRule ^(.*)$ https://htaccess.ru/$1 [R=301,L]

Настройка 403 кода ответа сервера для реф-спама (301-редирект для спама по REFERER) для списка ресурсов 

RewriteCond %{HTTP_REFERER} ref-spam-site.ru [NC,OR] RewriteCond %{HTTP_REFERER} another-ref-spam.ru [NC] RewriteRule .* - [F]

Настройка позволяет отклонить спамный реферальный трафик с ряда ресурсов по заголовку HTTP_REFERER.

Указание пути к файлу 404 ошибки с помощью .htaccess 

Внимание, важно чтобы код ответа сервера для 404 ошибки был именно 404. Путь к файлу указывается с помощью следующей строчки:

ErrorDocument 404 /404-for-me.php

! Все правила выполняются в прямом порядке их следования в файле .htaccess и правило, написанное позже, и будет выполняться позже.

! Для сайтов, на которых используется не сервер Apache, аналогичные 301-редиректы легко настраиваются с помощью PHP.

header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.htaccess.ru/dir/"); exit();

! Оптимально настраивать все редиректы сразу на конечную страницу (без промежуточных перенаправлений, в один шаг) это улучшает их восприятие со стороны поисковых систем и пользователей.

Если требуется настроить редирект только для некоторых USER_AGENT’ов, а не для всех пользователей 

RewriteCond %{HTTP_USER_AGENT} (iPad|ipad|iphone|iPhone|ipod|iPod|android|midp|j2me|symbian|series 60|symbos|windows mobile|windows ce|ppc|smartphone|blackberry|mtk|bada|windows phone) [NC]  RewriteRule (.*) http://mobile.htaccess.ru/ [L,R=301]

Если требуется настроить редирект для всех поисковых роботов (представлен список их USER_AGENT’ов) 

RewriteCond %{HTTP_USER_AGENT} !(accoona|ia_archiver|antabot|ask jeeves|baidu|dcpbot |eltaindexer|feedfetcher|gamespy|gigabot|googlebot |gsa-crawler|grub-client|gulper|slurp|mihalism|msnbot|worldindexer |ooyyo|pagebull|scooter|w3c_validator|jigsaw|webalta|yahoofeedseeker |yahoo! slurp|mmcrawler|yandexbot|yandeximages |yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons |yandexdirect|yandexmetrika|yandexcatalog|yandexnews |yandeximageresizer) [NC]  RewriteRule (.*) http://no-search.site.ru/ [L,R=301]

Несколько простых редиректов

Редирект с www.htaccess.ru/component/content/?view=featured на www.htaccess.ru/

RewriteCond %{QUERY_STRING} ^view=featured$ [NC] RewriteRule ^component/content/$ /? [R=301,L]

Редирект с www.htaccess.ru/index.php?idc=4&marea=6 на www.htaccess.ru/

RewriteCond %{QUERY_STRING} ^idc=4&marea=6$ [NC] RewriteRule ^index.php$ /? [R=301,L]

Синтаксис для регулярных выражений файла htaccess

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий