Найти в Дзене
MAXI.BY media

Как сделать 301 редирект через htaccess

Оглавление

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

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

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

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

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

  • В каком файле прописывается редирект для внутренних страниц сайта, а также с помощью какого ПО его можно найти
  • Какие меры необходимо предпринять перед тем, как вносить изменения в файл .htaccess
  • Как прописать редирект с одной страницы на другую
  • Другие редиректы

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

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

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

-2

Обзор программы, возможно, проведем в других материалах, чтобы статья не получилась необъятной .

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

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

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

-3

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

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

-4

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

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

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

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

-5

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

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

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

-7

Называем папку «Копия» и открываем ее. Далее, проделывайте ту же процедуру, что была описана в статье выше (перетяните .htaccess из правого окна в левое).

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

В появившемся диалоговом окне поставьте пункт «Перезаписать» и нажмите «Ок».
Так вы обезопасите свой сайт.
В появившемся диалоговом окне поставьте пункт «Перезаписать» и нажмите «Ок». Так вы обезопасите свой сайт.
  • Теперь о работе с самим файлом. Открываем программу Notepad++. В ней «Файл» - «Открыть». Находим и открываем наш файл .htaccess. Содержимое файла (директивы) может выглядеть по-разному. Это зависит от движка сайта, его настроек, наличия или отсутствия ssl сертификата и многого другого. Директивы могут занимать одну строчку в файле или несколько, могут занимать 30 строчек и более или их может не быть вообще. Для примера, рассмотрим (только с ознакомительной целью) содержимое (директивы) одного из файлов сайта на Wordpress.
В блоке №1 стандартные директивы Wordpress. IfModule mod_rewrite.c проверяет установку соответствующего модуля на сервере. Если да, то выполняются команды до </IfModule>

Блок №2 отвечает за подключение кэша (сохраняет информацию) в браузере. Эти директивы указывают время хранения изображений, служебных и других файлов. Из комментариев, идущих после знака # можно легко понять на какой срок настроена каждая директива.
В блоке №1 стандартные директивы Wordpress. IfModule mod_rewrite.c проверяет установку соответствующего модуля на сервере. Если да, то выполняются команды до </IfModule> Блок №2 отвечает за подключение кэша (сохраняет информацию) в браузере. Эти директивы указывают время хранения изображений, служебных и других файлов. Из комментариев, идущих после знака # можно легко понять на какой срок настроена каждая директива.

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

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

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

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

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

Если вам необходимо сделать редирект (перенаправление) с Главной страницы на Внутреннюю, то одним редактированием файла .htaccess здесь не обойтись. В этой статье мы не будем затрагивать этот вопрос, тем более, что в абсолютном большинстве случаев в этом нет необходимости.

Итак, вернемся к процессу.

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

Например, у вас есть сайт по адресу https://www.site.com.

Вам необходимо сделать перенаправление внутренней страницы сайта https://www.site.com/blog/ на страницу https://www.site.com/news/.

В последней строке файла .htaccess прописываем следующее:

Redirect     301 /blog/     https://www.site.com/news/

-11

Страницу с которой осуществляем перенаправление (редирект) не надо прописывать с доменным именем (в нашем случае домен https://www.site.com), а вот страницу, на которую перенаправляем надо.

-12

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

-13

Далее, сохраняйте файл и переносите его на хостинг, перезаписав старый.

-14

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

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

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

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

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

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

^ - ограничение слева (начало строки);
$ - ограничение справа (конец строки);
. - любой символ;
() - переменная;
\ - экранирование (символ после \ считается обычным, а не спецсимволом);
[] - диапазон значений;
! - спецсимвол отрицания;

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

? - символ повторяется 0 или 1 раз;
+ - 1 и более символов (до 65536);
* - 0 и более символов (до 65536);

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

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

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

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

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

RewriteCond  - задает правила и рамки для следующего за ним RewriteRule
%{HTTP_HOST} – переменная доменного имени (в нашем случае site.com)
^www.site.com$ - ограничиваем слева и справа
[NC] – флаг no case. Он дает команду не учитывать регистр
RewriteRule   (.*) – правило редиректа.
http://site.com – указывает домен без www., а $1 – ссылка на (.*)
R=301 – обозначает 301-й редирект, а флаг L останавливает исполнение правила.

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

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

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

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

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

RewriteEngine On
RewriteCond %{HTTP_HOST} ^bortvlad.ru$ [NC]
RewriteRule ^([^.]+)\.html$ $1.php [R=301,L]

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

Удаление

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

Добавление

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

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

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

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

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

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

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

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

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

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

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

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

RewriteCond      %{REQUEST_URI}  ^(.*)//(.*)$
RewriteRule    . %1/%2  [R=301,L]

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

RewriteCond      %{REQUEST_URI} ^(.*)--(.*)$
RewriteRule   . %1-%2 [R=301,L]

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

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

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

$lowerURI=strtolower($_SERVER['REQUEST_URI']);
if($_SERVER['REQUEST_URI']!=$lowerURI)
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://" . $_SERVER['HTTP_HOST'] . $lowerURI);
exit();
}

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

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

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

RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond %{HTTP_HOST} !^www\.site\.com
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

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

User-agent: Yandex
Disallow:
Host: newsite.com

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

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

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

____________________________

Автор - Дмитрий Черныш
В ООО "Макси Бай Медиа" с 2018 г. Являюсь специалистом по поисковой оптимизации сайтов
Автор - Дмитрий Черныш В ООО "Макси Бай Медиа" с 2018 г. Являюсь специалистом по поисковой оптимизации сайтов

__________________________

Digital агентство MAXI.BY media