В данной статье рассмотрим простые шаги по установке редиректа (переадресации) с одной страницы сайта на другую (одного URL на другой).
В данной статье рассмотрим простые шаги по установке редиректа (переадресации) с одной страницы сайта на другую (одного URL на другой).
В сети много информации по переадресации страниц. Однако, у неискушенного в строении сайтов или SEO оптимизации читателя может остаться большое количество вопросов по самой процедуре.
Как ее выполнять? С помощью какого ПО? Чего необходимо избежать в ходе процесса?
Поэтому с помощью простых инструкций и иллюстраций автор покажет, как выполнить Redirect 301 без последствий для Вашего ресурса.
Мы рассмотрим следующие моменты:
- В каком файле прописывается редирект для внутренних страниц сайта, а также с помощью какого ПО его можно найти
- Какие меры необходимо предпринять перед тем, как вносить изменения в файл .htaccess
- Как прописать редирект с одной страницы на другую
- Другие редиректы
Место, где прописываем редиректы
Большинство современных серверов используют ПО Апач (Apache). В таком случае переадресация выполняется с помощью файла .htaccess, который находится в корне сайта (чаще всего это папка public_html).
Заходить на хостинг будем с помощью бесплатной программы FileZilla.
Итак, вы вошли в хостинг сайта и открыли папку public_html, если она у вас корневая. Если ее нет, то эту и другую информацию о вашем сервере вы можете запросить у хостинг-провайдера.
Там увидите некоторое количество папок, сразу после которых (но не всегда) идет файл .htaccess.
Именно он нам и нужен.
Перетяните его в левое окно:
Теперь он скопировался на ваш ПК. Запомните директорию, в которой он лежит.
О мерах предосторожности
Когда речь идет о .htaccess – меры предосторожности не пустой звук. Если у Вас маленький опыт по работе с ним, то прочтите эту главу целиком.
Файл .htaccess – важный файл дополнительной конфигурации, где прописаны и исполняются разные директивы вашего сайта. Утеря или некорректные изменения в нем, могут повлечь печальные последствия. В таких случаях сайт становится полностью недоступен по вызываемому адресу или доступна только его Главная страница.
Чтобы Ваш ресурс не выпал из строя, перед тем как что-то менять придерживайтесь следующих простых правил:
-
Несмотря на то, что .htaccess открывается стандартным блокнотом Windows, никогда не используйте этот метод. Его следует открывать, редактировать и сохранять только с помощью специализированных текстовых редакторов, одним из которых является бесплатная программа Notepad++. С помощью нее вы можете редактировать файл .htaccess и другие системные файлы.
- Перед любыми манипуляциями с файлом .htaccess сохраните его в отдельную папку, которую можно легко создать, кликнув правой кнопкой мыши по левой части окна, далее «Создать каталог».
Называем папку «Копия» и открываем ее. Далее, проделывайте ту же процедуру, что была описана в статье выше (перетяните .htaccess из правого окна в левое).
В итоге, мы сделали 2-е копии файла .htaccess. Открывать и производить изменения будем только в первом файле. Второй, в папке «Копия», всегда будет в неизмененном виде. В случае, если ваши изменения приведут к нехорошим последствиям, вы всегда можете исправить ситуацию, взяв нетронутую версию из папки «Копия» и перезаписать файл .htaccess, находящийся на хостинге (перетягиваем уже из правого окна в левое).
В появившемся диалоговом окне поставьте пункт «Перезаписать» и нажмите «Ок».
Так вы обезопасите свой сайт.
- Теперь о работе с самим файлом. Открываем программу Notepad++. В ней «Файл» - «Открыть». Находим и открываем наш файл .htaccess. Содержимое файла (директивы) может выглядеть по-разному. Это зависит от движка сайта, его настроек, наличия или отсутствия ssl сертификата и многого другого. Директивы могут занимать одну строчку в файле или несколько, могут занимать 30 строчек и более или их может не быть вообще. Для примера, рассмотрим (только с ознакомительной целью) содержимое (директивы) одного из файлов сайта на Wordpress.
-
В блоке №1 стандартные директивы Wordpress. IfModule mod_rewrite.c проверяет установку соответствующего модуля на сервере. Если да, то выполняются команды до </IfModule>
Блок №2 отвечает за подключение кэша (сохраняет информацию) в браузере. Эти директивы указывают время хранения изображений, служебных и других файлов. Из комментариев, идущих после знака # можно легко понять на какой срок настроена каждая директива.
Из 3-го пункта необходимо вынести два правила:
- В файле .htaccess может быть разное содержимое как по объему файла так и количеству директив. Содержимое файла лучше никогда не трогать, если у Вас нет соответствующего опыта.
- Редиректы ссылок и страниц всегда прописывайте в конце содержимого файла. В нашем примере здесь:
Как прописать редирект
В предыдущей главе мы частично затронули процедуру установки редиректа с внутренних страниц сайта.
Почему с внутренних?
Если вам необходимо сделать редирект (перенаправление) с Главной страницы на Внутреннюю, то одним редактированием файла .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/
Страницу с которой осуществляем перенаправление (редирект) не надо прописывать с доменным именем (в нашем случае домен https://www.site.com), а вот страницу, на которую перенаправляем надо.
Редирект следующих страниц прописывайте с новой строки.
Не забывайте про пробелы. Часто по их вине возникают ошибки, из-за которых редирект не работает. Всего должно быть 3 пробела.
Далее, сохраняйте файл и переносите его на хостинг, перезаписав старый.
Другие редиректы
В других частях статьи мы подробно разобрали материал по работе с файлом .htaccess, мерами предосторожности, корректному редиректу с одной страницы на другую. Эта информация необходима для первого знакомства с .htaccess.
Вторая половина статьи будет интересна более продвинутым пользователям. В ней рассмотрим иные способы редиректа страниц, переход с www версии на версию без www, с http:// на https:// и другие.
Операторы регулярных выражений
Директивы .htaccess состоят из спецсимволов и модификаторов. Для лучшего понимания материала, я приведу основные:
Спецсимволы:
^ - ограничение слева (начало строки);
$ - ограничение справа (конец строки);
. - любой символ;
() - переменная;
\ - экранирование (символ после \ считается обычным, а не спецсимволом);
[] - диапазон значений;
! - спецсимвол отрицания;
Модификаторы:
? - символ повторяется 0 или 1 раз;
+ - 1 и более символов (до 65536);
* - 0 и более символов (до 65536);
Больше подробностей об этих значениях читайте здесь.
Рассмотрим действие символов и модификаторов
Редирект с www на без www
RewriteEngine On
RewriteCond %{HTTP_HOST} www.site.ru
RewriteRule ^(.*)$ http://site.ru/$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]
Если это правило не подойдет, то обратитесь в вашу хостинг-компанию.