301 редирект (переадресация) через .htaccess
Содержание:
- Полезные советы
- Настройка редиректов в .htaccess
- Как сделать 301 редирект в .htaccess
- Как сделать 302 редирект в .htaccess
- Принудительная загрузка сайта с www
- Принудительная загрузка сайта без www
- Принудительная загрузка сайта по протоколу HTTPS
- Принудительная загрузка сайта по протоколу HTTP
- Редирект домена на директорию
- Редирект с одного сайта на другой
- Примеры использования 301 редиректа
- 6. Когда использовать перенаправление 302 вместо перенаправления 301
- Что такое 301 редирект для сайта
- 301 moved permanently что это и как исправить
- Есть ли какой-нибудь аналог .htaccess в nginx?
- Как сделать редирект страницы. Способ 1 — PHP-редирект.
- Как сделать 301 редирект?
- Ошибки при использовании редиректов
- Проверка корректности настроек 301 редиректа
- Redirect в PHP
- Как сделать Редирект с http на https без htaccess — ковыряем web.config
- Переадресация на https через htaccess
- Самый простой пример редиректа: с сайта на сайт
- Сложные редиректы
- Резюме.
- Когда необходим редирект
- Настройка DNS-записи
Полезные советы
- Современные браузеры по умолчанию используют кеширование для редиректов. Чтобы проверить работу редиректа необходимо очистить кеш в браузере или использовать любой сторонний сервис по проверке кода ответа сервера.
- Нежелательно создавать цепочки редиректов. При медленной работе сервера это вызовет недовольство пользователя. Поисковые роботы также не любят последовательные редиректы — вес исходной страницы может не передаться.
- При составлении файла .htaccess простые директивы должны идти раньше сложных, которые распространяются на весь сайт. Такая компоновка будет более удобной при работе с файлом и поможет избежать путаницы.
Настройка редиректов в .htaccess
Ранее говорилось о том, что .htaccess позволяет устанавливать правила управления перенаправлениями (редиректами). Далее мы рассмотрим самые часто используемые из них.
Как сделать 301 редирект в .htaccess
301 редирект сообщает поисковикам о том, что веб-адрес был навсегда перемещен в другое место. Использовать постоянное перенаправление можно для веб-страниц, директорий или полностью всего сайта.
301 редирект передает ссылочной вес страницы. Его правильная настройка может понадобиться когда, например, выполняется перенос сайта из одного домена на другой.
Чтобы сделать 301 редирект со страницы staraya-stranitsa.html на novaya-stranitsa.html добавьте в .htaccess следующий код:
Redirect 301 /staraya-stranitsa.html https://example.com/novaya-stranitsa.html
Как сделать 302 редирект в .htaccess
В отличие от 301 редиректа, 302 сообщает поисковикам о том, что веб-адрес был перемещен в другое место временно. Временное перенаправление применяется в таких случаях:
- если нужно временно перенаправить трафик с одного сайта на другой;
- если нужно показать посетителям сайта другую информацию без изменения старой страницы;
- если на сайте выполняются технические работы;
Еще один способ применения 302 редиректа, который нередко используют хостинговые компании — скрытие от посетителей страниц сайта, которые содержат запрещенный контент.
302 редирект не передает ссылочный вес страницы.
Чтобы выполнить временное перенаправление со страницы staraya-stranitsa.html на novaya-stranitsa.html добавьте в .htaccess следующий код:
Redirect 302 /staraya-stranitsa.html https://example.com/novaya-stranitsa.html
Принудительная загрузка сайта с www
Чтобы сайт загружался по адресу www.example.com даже если пользователь вводит в браузере example.com, добавьте в .htaccess следующий код:
RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com RewriteRule ^(.*)$ https://www.example.com/$1
Принудительная загрузка сайта без www
Чтобы сайт загружался по адресу example.com даже если пользователь вводит в браузере www.example.com, добавьте в .htaccess следующий код:
RewriteEngine on RewriteCond %{HTTP_HOST} ^www.example.com RewriteRule ^(.*)$ https://example.com/$1
Принудительная загрузка сайта по протоколу HTTPS
Чтобы сайт загружался по защищенному протоколу передачи данных HTTPS (https://example.com/) даже если пользователь хочет загрузить его по протоколу HTTP (http://example.com/), добавьте в .htaccess следующий код:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
Принудительная загрузка сайта по протоколу HTTP
Чтобы сайт загружался по протоколу передачи данных HTTP (http://example.com/) даже если пользователь хочет загрузить его по защищенному протоколу HTTPS (https://example.com/), добавьте в .htaccess следующий код:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} ^https$ RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} </IfModule>
Редирект домена на директорию
Чтобы при заходе на сайт https://example.com/ выполнялось перенаправление в директорию сайта https://example.com/directory/ добавьте в .htaccess следующий код:
RewriteCond %{HTTP_HOST} ^example.com$ RewriteCond %{REQUEST_URI} !^/directory/ RewriteRule (.*) /subdir/$1
Редирект с одного сайта на другой
Чтобы выполнить перенаправление с одного сайт на другой (https://example-1.com/), добавьте в .htaccess сайта, с которого должен выполняться редирект, следующий код:
Redirect 301 / https://example-1.com/
Примеры использования 301 редиректа
Редирект с index.php на главную
Чтобы настроить его вам нужно прописать в вашем файле следующий код, который будет перенаправлять посетителей с адреса site.ru/index.php на site.ru:
RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP RewriteRule ^index\.php$ http://site.ru/
Если вам так же нужно сделать переадресацию с index.html, то просто в коде выше замените .php на .html
Склеиваем алиасы сайта
Если у вас несколько доменов и вы хотите все их перенаправлять на основной сайт, то используем:
RewriteCond %{HTTP_HOST} ^vash-sait.com$ RewriteCond %{HTTP_HOST} ^www.vash-sait.com$ RewriteCond %{REQUEST_URI} !^/robots.* RewriteRule ^(.*)$ http://vash-sait.ru/$1
Обратите внимание на первые 2 строки, там указано зеркало в зоне .com, если у вас иная или несколько зон, то добавляем правила
Редирект с www на без www
Этот способ я уже описывал ранее, но повторюсь. Для того, чтобы склеить зеркала и выбрать основным домен без www прописываем:
RewriteCond %{HTTP_HOST} ^www.site\.ru$ RewriteRule ^(.*)$ http://site.ru/$1
Редирект с домена без www на домен с www
Это действие противоположное предыдущему, только основное зеркало здесь www.site.ru:
RewriteCond %{HTTP_HOST} ^site\.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1
301 редирект страниц со слэшем и без
Это еще один вид дублей, тут мы склеим страницы site.ru/category/ и site.ru/category, как видите, в конце второго урла не стоит слэша:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1
Если вам нужно наоборот оставить слэш в конце урла, то вам нужен данный вариант:
RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ $1/
Если у вас по какой-то причине появились урлы типа site.ru/category//article.html, то юзаем код:
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2
где, «//» можно заменить на «—» или любые сдвоенные символы в урле.
Массовая замена категории
Бывает, что вы переименовали категорию, а за ней закреплены тысячи урлов. Чтобы не состарится во время написания тысяч одинаковых перенаправлений юзаем:
RewriteRule ^(.*)/old-category/(.*)$ $1/new-category/$2
Если у вас категория идет сразу после домена (типа site.ru/category/), то используем другой вариант:
RewriteRule old-category /(.*) / old-category /$1
Редирект на новую страницу
Самый простой редирект со страницы на страницу, для это просто пропишите так:
Redirect 301 /old-post.html http://new-site.ru/new-post.html
Где old-post.html — это ваша старая страница, а new-site.ru/new-post.html — это новая страница и она может быть на любом домене (включая ваш текущий домен).
Редирект для url с параметрами
Страницы с параметрами редиректятся сложнее, возьмем пример http://site.ru/page.php?sort=articles. Параметр здесь «sort=articles». Код будет следующим:
RewriteCond %{QUERY_STRING} sort=articles RewriteRule .* http://site.ru/page.php?
Работаем с расширениями
Убираем .html из url (для удаления .php не забудьте заменить $1.html на $1.php):
RewriteRule ^((+/)*+)$ /$1.html
Меняем .php на .html в урлах и наоборот (не забываем поменять местами в коде):
RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html
6. Когда использовать перенаправление 302 вместо перенаправления 301
В целом следует ожидать использования 301 редиректа.Однако есть несколько случаев, когда вы можете захотеть использовать вместо него 302, в том числе:
- Возможно, вы используете поэтапный план запуска веб-сайта.
- Возможно, вы перенаправляете пользователей в рамках функциональности, где SEO не применяется, например, шлюзов входа в систему или проверок электронной коммерции.
-
Возможно, вы используете временную холдинг страницу и не хотите вводить в заблуждение поисковые системы или портить рейтинг в поисковых системах, сигнализируя о том, что вы постоянно перенаправляете свой подробный, богатый контент на пустую страницу «Скоро будем»как внизу на скриншоте
Что такое 301 редирект для сайта
Что такое 301 редирект? Даже не так. Что такое Redirect? Это команда поисковому роботу перенаправлять посетителя на другую страницу, которая была перемещена в другое место. Цифра 301 — это код, который говорит об окончательном перемещении страницы в новую локацию. Ведь когда мы переходим на какую-то страницу и нам выдается ошибка, мы видим перед собой код этой ошибки и расшифровку. Например, код 404 говорит нам — Not Found, что означает — страница не найдена, а 505 ошибка сообщает, что ответ от сервера не был получен. Но если вышеописанные ошибки видны посетителю на открытой странице браузера, то шифры перенаправления видят только роботы, которые и направляют гостя по другой ссылке (если, конечно, редирект был настроен правильно). Вот как раз новую ссылку, меняющуюся в адресной строке браузера посетитель и заметит. То есть 301 редирект перебрасывает пользователя с одной страницы на другую, не останавливаясь на промежуточном адресе, доводя до конечного места локации контента.
Каким образом происходит процесс перемещения? С помощью кода в файлах на сервере с сайтом размещается специальный код, который роботы поисковых систем считывают и выполняют. В этом коде обязательно присутствуют константы: откуда переместить и куда. Причин для использования 301 редиректа на сайте может быть множество, рассмотрим основные из них в этой статье, ведь, возможно, что какой-то способ вам понабиться, и вы им воспользуетесь.
301 moved permanently что это и как исправить
Что это за глава? Подумаете вы после прочтения всего того, что было описано выше. А я, в двух словах, поясню. Moved permanently в переводе означает «переехал навсегда». Некоторые вебмастера еще и краем уха не слышали о 301 Moved permanently, тем более о Permanent Redirect, то есть о постоянном редиректе, и ищут ответ, почему у них выбивает такую ошибку на странице. А теперь обращение к тем, кто искал, как исправить 301 moved permanently — начинайте читать статью сначала и находите свой конкретный случай для решения своих задач. А мы переходим к следующему этапу: коротко о том, что такое 302 редирект и зачем он нужен, если есть 301-й.
Есть ли какой-нибудь аналог .htaccess в nginx?
Ещё один довольно частый вопрос. В этом веб-сервера такой возможности нет. Однако, подобное обычно и не требуется. Дело в том, что nginx, как правило, устанавливается в качестве фронденда, т. е. принимает и обрабатывает все запросы, которые либо выполняет сам, либо перенаправляет на бэкенд, роль которого может выполнять Apache, который можно дополнительно конфигурировать с помощью .htaccess.
Поддержка сайта
С удовольствием создаю годный контент. Буду очень признателен, если вы поддержите мои усилия:
днём интернета
шоколадкой для работы мозга
коробочкой ароматного чая для бодрости
продлением хостинга на +1 месяц
2 070
не в сети 5 месяцев
Как сделать редирект страницы. Способ 1 — PHP-редирект.
Этот редирект срабатывает без загрузки странички.
Страничка на которую идёт редирект — получает оригинальный REFERER (т.е. таким образом не скрыть откуда был редирект).
Данный редирект например можно использовать для Ютуба. Ютуб как известно можно связать только с одним сайтом, соответственно на чужой сайт вы не сможете сделать ссылку. Для обхода этого ограничения создаете отдельный подкаталог на своем домене, в него кладете index.phd с прописанным кодом редиректа.
Редирект нужно оформлять в файл.php и ОБЯЗАТЕЛЬНО до вывода любых символов. То есть если будет лишний пробел или символ, который выводится на экран (например до знака <?) — то редирект не сработает. Любой вывод на такой страничке (коды метрики и т.п.) не сработают после редиректа, а если написать до редиректа — не сработает редирект.
Как писать редирект, пример, — файл index.php:
<?php header («Location: //leonov-do.ru/»); ?> |
301 и 302 редирект особой разницы не имеют для арбитражника (обычно в SEO больше) — но некоторые рекламные сети принципиально пропускают только один из редиректов. Технически 301 обозначает временный редирект, а 302 — постоянный редирект. Указать можно третьим параметром функции код редиректа, например 302 (второй должен быть true, параметры идут через запятую):
<?php header («Location: //leonov-do.ru/», TRUE, 302); ?> |
Как сделать 301 редирект?
Теперь, зная эти правила, мы можем попытаться самостоятельно сделать редирект с помощью htaccess.
- Редирект .htaccess на другую страницу
Redirect 301 /old-post.html http://new-site.ru/new-post.html
- Редирект .htaccess с www на без www
RewriteEngine on RewriteCond %{HTTP_HOST} !^site.ru$ RewriteRule ^(.*)$ site.ru/$1
- Редирект .htaccess с без www на www
RewriteEngine on RewriteCond %{HTTP_HOST} !^www.site.ru$ RewriteRule ^(.*)$ www.site.ru/$1
где site.ru — ваше доменное имя.
- Редирект с index.php (html) на главную страницу
RewriteEngine on RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.(php|html|htm)\ HTTP/ RewriteRule ^(.*)index\.(php|html|htm)$ $1
- Редирект со слешем на без слеша
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !$ RewriteRule ^(.*)\/$ /$1
- Редирект со страниц без слеша на слеш
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*)$ /$1/
- Редирект всех страниц одного домена на главную другого домена
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/
- Редирект с http на https через. htaccess
RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1
- Редирект с https на http
RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1
- Избавление от дублей страниц
Если вы заметили, что к адресу основной страницы приклеивается что-то вроде &sa=123 456 или &crw=123 456 и подобное, просто замените буквенную часть в следующем коде
RewriteCond %{REQUEST_URI} ^(.*)\&sa= RewriteRule ^(.*)\&sa=(.*)$ $1
Ошибки при использовании редиректов
- Любой многошаговый редирект. Если есть возможность, то желательно не допускать многошаговых редиректов, чтобы он и быстрее сработал, и передалось максимум ссылочного веса.
- Использование неправильного типа редиректов. При выборе типа редиректа необходимо учитывать нюансы каждого из них.
- Внедрение внутренних редиректов без смены ссылок на новые адреса. После внедрения всех редиректов у себя на сайте, необходимо проверить, чтобы каждая страница вашего сайта уже ссылалась на новую и внутри сайта у вас не было ссылок на страницы, с которых происходит редирект.
- Редирект на нерелевантные страницы/контент. Редирект всегда желательно проставлять на максимально релевантную страницу: или на похожую страницу, или на ветку каталога/раздела, к которому принадлежала данная страница.
- Неправильный выбор использования rel=canonical vs 301 редирект.
- Редирект, конечной точкой которого является не 200-я страница. Редирект должен вести на правильно работающую страницу с 200 ответом сервера. Иначе, желательно не сбивать поисковых роботов и отдавать 404 ответ.
- Редирект robots.txt. Так как, например, нужно прописывать директиву Host для Яндекса при склейке доменов.
Надеемся, что данное руководство станет вам шпаргалкой и помощником для использования 301-го редиректа для вашего сайта.
Проверка корректности настроек 301 редиректа
Самый простой способ проверки переадресации – ручное тестирование. Для этого необходимо вставить в адресную строку браузера url сайта или страницы, с которой настроено перенаправление. Если при открытии будет доступен ресурс, на который настроен редирект, то переадресация выполняется правильно.
Для автоматической проверки можно воспользоваться специальными сервисами:
-
Redirect Checker, bertal.ru или Header Checker Tool для тестирования отдельных страниц;
-
программой Screaming Frog Seo Spider, способной просканировать весь сайт.
Существует ряд ошибок, которые следует избегать при настройке редирект 301:
-
использование перенаправлений между страницами сайта без изменения их url в ссылках;
-
установка временной переадресации вместо постоянной;
-
неправильный выбор типа редиректа;
-
перенаправление файла robots.txt;
-
непонимание разницы между rel=canonical и кодом 301;
-
редирект на нерелевантный контент;
-
переадресация, которая не приводит к 200-й странице.
Стоит отметить проблему создания цепочки ссылок, которая может привести к появлению циклического редиректа — ошибки с кодом «ERR_TOO_MANY_REDIRECTS». Наиболее распространенные причины возникновения такого бага – неправильная настройка в процессе создания переадресации, вирусная атака, слишком длинная цепочка редиректов. Не рекомендуется настраивать редирект, содержащий более пяти адресов. Оптимальной является прямая переадресация со старого на новый url.
Redirect в PHP
301 Редирект в PHP используется, когда с созданием в htaccess возникают трудности, а функция в ПХП будет более логичной. Синтаксис permanent redirect в php выглядит так:
header(«HTTP/1.1 301 Moved Permanently»);header(«Location: http://ваш_домен.ru»);die(«Redirect»);
Данный синтаксис сообщает браузеру пользователя с какой страницы и на какой сайт надо сделать перманентный редирект. Стоит учесть что http://ваш_домен.ru — необязательно главная страница одного и того же ресурса, это может быть как отдельная страница, категория, так и совершенно левый домен. Если при написании функции redirect была допущена ошибка, браузер сообщит об этом в окне надпись «Redirect». Примеры функций Permanent Redirect далее.
Как убрать дубль адреса сайта в адресной строке с помощью ПХП
if (strpos($_SERVER, ‘http://ваш_сайт.ru’) !== false)
{
$real_page_url = «http://ваш_сайт.ru».str_replace ( «/http://ваш_сайт.ru», «», $_SERVER );
header(«HTTP/1.1 301 Moved Permanently»);
header(«Location: $real_page_url»);
die(«Redirect»);
}
Вот такой функцией убирается дублирование адреса вида: http://ваш_сайт.ru/ http://ваш_сайт.ru/страница
Обратите внимание на написание URL в условии — здесь оно пишется как URI. Получается что при выполнении условия нахождения в адресной строке двойной ссылки, браузер должен перенаправить пользователя 301 редиректом на корректную страницу с помощью переменнной $real_page_url, а кривую ссылку считать ложной
Как убрать дубль страницы со слешем с помощью PHP
if ( ( $_SERVER, — 1, 1 ) == ‘/’ )
{
$requested_url = rtrim($requested_url, ‘/’);
header(«HTTP/1.0 301 Moved Permanently»);
header(«Location: $requested_url»);
die(«Redirect»);
}
Эта простая функция проверяет наличие в адресной строке конечного слеша. И если слеш обнаружен, то он обрезается с помощью перенаправления на ссылку без конечного слеша.
Как сделать Редирект с http на https без htaccess — ковыряем web.config
Если вы хотите сделать 301 редирект с http на https без htaccess и вам не подходят настройки nginx, возможно, у вас хостинг под управлением Windows? Тогда добавляем вот такие строчки в файл web.config на сервере:
<?xml version=»1.0″ encoding=»UTF-8″?>
<configuration>
<system.webServer>
<R ewrite>
<rules>
<rule name=»Redirect to https» stopProcessing=»true»>
<match url=»(.*)» />
<conditions>
<add input=»{HTTPS}» pattern=»off» ignoreCase=»true» />
</conditions>
<action type=»Redirect» url=»https://{HTTP_HOST}{REQUEST_URI}» redirectType=»Permanent» />
</rule>
</rules>
</R ewrite>
</system.webServer>
</configuration>
Таким образом, будет настроено полное перенаправление домена с http на https, вместе с поддоменами. Но если поддомены трогать запрещено, тогда используем код ниже, вставляя его в тот же web.config:
<?xml version=»1.0″ encoding=»UTF-8″?>
<configuration>
<system.webServer>
<R ewrite>
<rules>
<rule name=»Redirect to https» stopProcessing=»true»>
<match url=»(.*)» />
<conditions>
<add input=»{HTTPS}» pattern=»off» ignoreCase=»true» />
<add input=»{HTTP_HOST}» pattern=»^domain\.ru» />
</conditions>
<action type=»Redirect» url=»https://{HTTP_HOST}{REQUEST_URI}» redirectType=»Permanent» />
</rule>
</rules>
</R ewrite>
</system.webServer>
</configuration>
Переадресация на https через htaccess
Если ваш сайт уже проиндексирован то перед настройкой редиректа вам нужно произвести склейку зеркал, а потом уже настраивать редирект. Это поможет минимизировать потери трафика и позиций . О том как это сделать написано тут.
Для того, что бы настроить редирект с http на https, вам нужно, при помощи программы Notepad++, в корне вашего сайта открыть файл .htaccess, и далее, в самом начале этого файла, прописать один из нескольких вариантов перенаправления.
Как пользоваться Notepad++ и настроить для него FTP-подключение я рассказывала в одной из прошлых статей, с которой вы можете ознакомиться по этой ссылке:
Все дело в том, что настройки хостинга могут быть разные. Поэтому какого-то универсального синтаксиса для написание перенаправления нет и нужно будет пробовать разные варианты, что бы найти тот, который сработает на вашем хостинге.
Если вы не хотите экспериментировать с различными способами перенаправления, то лучше всего будет обратиться в техподдержку вашего хостинга и уточнить у них, как лучше всего настроить редирект с HTTP на HTTPS именно для вашего хостинга.
Самый простой пример редиректа: с сайта на сайт
Redirect / www.example.com
www.example.com — сайт, на который мы перенаправляем запрос пользователя.
Redirect /semantica semantica.in/
Redirect /semantica/blog semantica.in/blog
Redirect 301 /kernel semantica.in/
Что всё это значит:
1 строка — при обращении к странице www.example.com/semantica будет открываться сайт semantica.in/
2 строка — при обращении к http://www.example.com/semantica/blog будет открываться semantica.in/blog
3 строка — веб-сервер будет отдавать код 301 о постоянном переезде на новый URL
Теперь, когда вы примерно понимаете, как это работает, можно переходить на задачи посложнее.
Сложные редиректы
Для сложных редиректов существует модуль mod_rewrite — это средство преобразования URL-адресов, использующее регулярное выражение. Для редиректа используются три важные директивы: RewriteCond, RewriteRule и RewriteEngine.
- RewriteEngine включает или выключает работу механизма преобразования:
RewriteEngine on | off
Положение on-off включает и выключает работу модуля.
2. RewriteCond — определяет условие какого-либо правила, при котором происходит преобразование. Сразу после директивы чаще всего идут переменные %{HTTP_HOST} и %{REQUEST_URI}, которые означают адрес сервера (например, example.ru) и ресурс, запрошенный в строке HTTP-запроса, соответственно.
3. RewriteRule — идёт после одного или нескольких RewriteCond. Это правило преобразования URI, которое применяется только при условии выполнения RewriteCond.
Синтаксис директивы RewriteRule выглядит следующим образом:
RewriteRule Шаблон Подстановка
Здесь стоит дать пояснение к используемым символам регулярного выражения, которое задает шаблоны строк:
Метасимволы используются для задания групп символов и меток в шаблоне:
- ^ — метка начала строки,
- $ — метка конца строки,
- \ — экранирующий слеш, позволяет считать следующий за ним метасимвол обычным символом,
- . — точка, обозначает любой символ, но только один,
- () — группировка.
- ! — отрицание,
Флаги определяют дополнительные опции для данного правила и перечисляются в квадратных скобках через запятую:
- NC — (nocase) отключает проверку регистра символов.
- R — (redirect) останавливает процесс преобразования и возвращает результат браузеру клиента как редирект на данную страницу (302, MOVED TEMPORARY). С данным флагом можно указать другой код результата, например R=301 возвратит редирект с кодом 301 (MOVED PERMANENTLY).
- L — (last) останавливает процесс преобразования, и текущая ссылка считается окончательной.
Резюме.
301 редирект жизненно важен для поддержания работоспособности веб-сайта. Он выполняют основную функцию, сигнализируя как пользователям, так и поисковым системам, когда контент вашего веб-сайта перемещается и изменяется, и гарантируют, что по мере развития вашего веб-присутствия ваш путь пользователя остается ясным и логичным, а ваша видимость в поисковых системах сохраняется от итерации к итерации.Если пренебречь вопросом и не настроить переадресацию, то будет создан плохой пользовательский интерфейс. Старые ссылки – ведущие в никуда, не лучший пример SEO – оптимизации блога. Ссылки, в конечном итоге, приведут на новый домен, но это займет несколько секунд или появится белый экран.Хорошая новость в том, что перенаправление 301 или 301 redirect легко настроить и применить.Такие общие положения о 301 редиректе.
Когда необходим редирект
Ниже обозначим основные наиболее актуальные для настройки 301 редиректа ситуации.
Сайт сменил домен.
В случае переезда сайта на новый адрес необходимо настроить постраничный редирект между главными страницами, а также листингами и карточками, чтобы страницы oldsite.ru перенаправляли пользователей и робота на newsite.ru.
Переадресация должна выполняться со всех адресов старого домена на аналогичные страницы нового домена.
Установка SSL-сертификата.
В данном случае необходимо перенаправлять пользователей со страниц с незащищенным протоколом http на страницы с защищенным протоколом https.
Смена URL конкретной страницы.
Такая необходимость может возникнуть в нескольких случаях – смена CMS, смена урловой структуры на сайте и т.д.
Таким образом, необходимо отправить пользователей с site.ru/page1/ на site.ru/catalog/page1/.
Перенос разделов на поддомены.
Такая необходимость появляется, например, если вы хотите отделить какое-либо направление своего сайта в отдельное.
Для того, чтобы объединить сайты, расположенные в разных доменных зонах.
Например, вебмастер покупает домены site.com, site.ru, site.net, site.org и site.biz и на четырех последних сайтах настраивает редирект на основной – site.com.
Устранение дублей страниц или копий сайта.
Наличие дублей может существенно подорвать вашу стратегию продвижения и привести к понижению в ранжировании в поисковых системах. В случае, если в индексе поисковых систем обнаружены дубликаты продвигаемых страниц, настройка переадресации – лучший выход.
Настройка DNS-записи
Чтобы настроить редирект с www.example.com на example.com (или наоборот), нужно создать запись для каждого имени.
Откройте панель управления DNS.
Если записи домена ещё не существует, создайте её сейчас. В hostname укажите доменное имя (к примеру, example.com), в поле IP address нужно указать внешний IP-адрес сервера Apache. Некоторые системы создают запись A, которая указывает на заданный IP-адрес, автоматически, а некоторые требуют создавать эти записи вручную.
Затем создайте еще одну запись А, на этот раз для адреса с префиксом www, указав тот же IP-адрес.
Примечание: Такой редирект работает и с записями CNAME, поскольку запись А канонического имени привязана к IP-адресу веб-сервера Apache.
Теперь сервер доступен по двум доменам: с префиксом www и без него. Можно начинать настройку редиректа.