- Как сделать 301-редирект в файле .htaccess? Примеры и правила настройки
- Памятка по используемым символам и обозначениям
- Редирект через .htaccess
- В каких случаях подойдет .htaccess-редирект
- Для чего нужен 301-й редирект
- Как сделать редирект через .htaccess
- 301 редиректы с примерами
- Для чего нужен 301 редирект?
- Настройка 301 редиректов в файле .htaccess
- 301 редирект с одной страницы на другую
- Склейка основного зеркала сайта при добавлении www
- Склейка основного зеркала сайта при удалении www
- Склейка верхнего регистра с нижним
- 301 редирект со страниц со слешем на страницы без слеша (весь сайт)
- 301 редирект со страниц без слеша на страницы со слешем (весь сайт)
- 301 редирект с http на https для всего сайта
- 301 редирект с https на http для всего сайта
- Массовая склейка. 301 редирект для index.php, index.html или index.htm
- 301 редирект с домена на домен
- 301 редирект только адреса site.com/index.php (без GET-параметров) на основное зеркало site.com
- 301 редирект для конкретного файла, а не всей папки
- Редирект со всех файлов домена, кроме папки администратора bitrix
- 301 редирект с поддомена на основной домен
- 301 редирект каждой страницы одного домена на такой же адрес другого URL
- 301 редирект всех страниц одного домена на главную страницу другого домена
- 301 редиректы в зависимости от GET-параметра: примеры
- Пример №1
- Пример №2
- Пример №3
- Пример №4
- Пример №5
- Пример №6
- 301 редиректы кириллическими URL-адресами
- Сервисы для проверки редиректов
Как сделать 301-редирект в файле .htaccess? Примеры и правила настройки
Код состояния HTTP 301 или Moved Permanently («Перемещено навсегда») — стандартный код ответа сервера, который может быть получен, если запрошенный URL-адрес сайта был навсегда перенесен в новое месторасположение.
Введение. Правила приведены для сервера Apache. В правилах: %
Проверка кода ответа. Быстрая и бесплатная проверка кодов ответа для списка URL в режиме онлайн реализована в рамках комплекса инструментов «Пиксель Тулс», предусмотрено удобное цветовое кодирование и загрузка URL файлом.
Анализ проведён с помощью инструментов в сервисе Пиксель Тулс.
Ниже даны наиболее используемые правила настройки файла .htaccess для 301-редиректа. Лучше размещать все правила после двух строк:
Options +FollowSymLinks
RewriteEngine On
# Текстовый комментарий, данная строчка не будет обрабатываться.
RewriteCond %
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteCond %
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %
RewriteCond %
RewriteRule ^(.*)$ https://pixelplus.ru/$1 [R=301,L]
Redirect 301 /was.php http://www.site.ru/new.php
При этом, новый адрес указывать необходимо полностью с http и доменным именем.
RewriteRule ^dir /dir-new/$1 [R=301,L]
Скажем, адрес страницы имеет вид: http://www.site.ru/dir/index.php?IBLOCK_ID=1&SECTION_ID=111 тогда для настройки 301 переадресации на новый адрес, необходимо использовать следующее правило:
RewriteCond %
RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]
Если один (или несколько) из GET параметров не задан(ы) или может иметь произвольное значение (в нашем примере это SECTION_ID), можно использовать следующий код:
RewriteCond %
RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]
Если адрес имеет следующий вид: http://www.site.ru/?abc то для перенаправления подойдет последовательность строчек:
RewriteCond %
RewriteRule ^$ /? [R=301,L]
Если требуется настроить переадресацию только для адреса http://www.site.ru/dir/, но при этом чтобы страница http://www.site.ru/dir/index.php?IBLOCK_ID=1 открывалась по старому адресу, необходимо использовать спецсимвол $ в правиле.
RewriteRule ^dir/$ http://www.site.ru/new-dir/ [R=301,L]
Для доменов в зоне РФ действуют все те же правила, но только все кириллические символы необходимо заменить на альтернативный код (он на латинице). В частности, сама зона .рф преобразуется в .xn--p1ai.
RewriteCond %
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
И для домена в зоне РФ:
RewriteCond %
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteCond %
RewriteRule ^(.*)$ http://www.site.ru/si-te/ [R=301,L]
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]
RedirectMatch 301 (.*)\.html$ http://www.new-site.ru$1.php
RewriteRule ^img/(.+)\.jpg$ http://img.domain.ru/$1.jpg [R=301,L]
Указывается порядок загрузки типов индексного файла, лежащих в корне каталога.
DirectoryIndex index.html index.php index.htm index.shtml
RewriteCond %
RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]
Для всех индексных страниц на сайте:
RewriteRule ^(.*)index\.php$ http://www.site.ru/$1 [R=301,L]
RewriteCond %
RewriteRule ^(.*)$ http://site.ru%
RewriteRule [^abc]/unique-file.html /unique-file.html [R=301,L]
Код позволяет поставить 301-редирект со всех папок вида http://site.ru/***/uniqe-file.html на один файл в корне /unique-file.html. Бывает полезен при переделке сайта и изменении ссылок.
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/
Позволяет устранить наличие дублей URL с HTTPS в индексе поисковых систем.
RewriteCond %
RewriteCond %
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
RewriteCond %
RewriteCond %
RewriteRule .* — [F]
Настройка позволяет отклонить спамный реферальный трафик с ряда ресурсов по заголовку HTTP_REFERER.
Внимание, важно чтобы код ответа сервера для 404 ошибки был именно 404. Путь к файлу указывается с помощью следующей строчки:
ErrorDocument 404 /404-for-me.php
! Все правила выполняются в прямом порядке их следования в файле .htaccess и правило, написанное позже, и будет выполняться позже.
! Для сайтов, на которых используется не сервер Apache, аналогичные 301-редиректы легко настраиваются с помощью PHP.
! Оптимально настраивать все редиректы сразу на конечную страницу (без промежуточных перенаправлений, в один шаг) это улучшает их восприятие со стороны поисковых систем и пользователей.
RewriteCond %
RewriteRule (.*) http://mobile.site.ru/ [L,R=301]
RewriteCond %
RewriteRule (.*) http://no-search.site.ru/ [L,R=301]
Переадресация с www.site.ru/component/content/?view=featured на www.site.ru/
RewriteCond %
RewriteRule ^component/content/$ /? [R=301,L]
Переадресация с www.site.ru/index.php?idc=4&marea=6 на www.site.ru/
RewriteCond %
RewriteRule ^index\.php$ /? [R=301,L]
. — Точка заменяет произвольный символ.
[abc] — обозначает перечень символов, совпадающих с буквами a, b, или с.
[^abc] — перечень символов, которые не входят в указанных диапазон. Совпадёт с любым символом, кроме a, b, или с.
* — означает, что предшествующий символ может повторяться (0 или более раз).
[abc]* — команда найдёт идущие подряд символы из заданного набора.
[^abc]* — с точностью до наоборот.
.* — заменяет абсолютно любой набор символов. «.*» — найдёт все подстроки между кавычками.
^ — начало строки (в том случае, если используется в начале выражения).
$ — обозначает конец строки.
\w — буква, цифра или подчёркивание _.
\d — заменяет любую цифру.
\D — заменяет любой символ, но не цифру.
5 — заменяет любую цифру.
[a-z] — любая буква от a до z (весь латинский набор символов) в нижнем регистре.
[A-Z] — любая буква от A до Z в ВЕРХНЕМ регистре.
[a-zA-Z] — любая буква от a до Z в любом регистре.
[a-Z] — то же самое.
RewriteRule (.*) $1? [R=301,L]
Располагать после: RewriteBase /
Памятка по используемым символам и обозначениям
Строчка RewriteCond — условие выполнения правила RewriteRule. Если условие выполняется, то срабатывает редирект. Правила могут задаваться с помощью регулярных выражений.
Спецсимволы, используемые в правилах и их значения.
- ^ — спецсимвол начала строки;
- $ — спецсимвол конца строки;
- ! — спецсимвол отрицания;
- . — точка, заменяет любой символ, но только один;
- () — группировка;
- \ — «экранирующий» слеш, следующий символ после него считается обычным, а не спецсимволом;
- # — начало текстового комментария в файле.
Модификаторы используются после обычных, спецсимволов или их групп и позволяют расширить возможности шаблонов для срабатывания правил.
- ? — символ повторяется 0 или 1 раз.
- + — повторяется от 1 до 65536 раз.
- * — повторяется от 0 до 65536 раз.
Флаги, задают доп. опции для используемого правила. Перечисляются в квадратных скобках через запятую, скажем [NC] или [R=301,L].
- NC — флаг NoCase, отключающий проверку регистра символов при срабатывании правила.
- R — флаг Redirect, производит процесс остановки изменения URL-адреса и возвращает результат. Чаще всего используется значение R=301, но возможны и другие для временных перенаправлений (302, MOVED TEMPORARY).
- L — флаг Last, останавливает формирования URL-адреса и строка считается окончательной.
Источник
Редирект через .htaccess
Редирект можно настроить разными способами: в панели управления хостингом, через код HTML, через PHP, с помощью web.config, через .htaccess, а также другими способами. Рассмотрим, в чём особенность редиректа через .htaccess и как настроить 301-й .htaccess-редирект с одной страницы на другую, а также Bitrix redirect.
Если вы ещё не знаете, зачем нужно перенаправление страниц сайта, читайте нашу статью Что такое редирект.
В каких случаях подойдет .htaccess-редирект
Чтобы понять, для каких целей лучше подходит .htaccess-редирект, разберёмся, что такое .htaccess.
.htaccess — этот системный файл, который принадлежит корневой структуре сайта. В отличие от главного конфигурационного файла, который позволяет выполнять настройку веб-сервера в целом, .htaccess даёт возможность изменять настройки для отдельно взятых папок и пользователей.
Файл .htaccess позволяет вариативно настроить сайт. Действие команд из .htaccess распространяется на папки и подкаталоги, расположенные в одной директории с этим файлом. Если для какой-либо вложенной директории нужны иные инструкции, в ней также можно создать .htaccess. Если .htaccess расположен в корневой директории сервера, его действие распространяется на весь сервер, кроме тех директорий, где находится другой файл .htaccess.
Таким образом, через .htaccess можно сделать перенаправление точечно, а не сразу для всего ресурса. Этот вариант отлично подойдет в том случае, если вам нужно настроить переадресацию только для одной или нескольких страниц сайта.
Для чего нужен 301-й редирект
Помимо разных способов настройки переадресации, существуют разные виды редиректов. Каждый из них имеет своё кодовое название. Основные виды:
- 300 — сообщает, что по искомому запросу можно перейти не на одну, а на несколько альтернативных страниц;
- 301 — постоянный;
- 302 — временный;
- 303 — на схожую по тематике страницу;
- 305 — отсылающий к подключению через прокси-сервер.
Также существуют 304-й, 306-й и 307-й редиректы. Однако сейчас эти виды практически никто не использует. Один из самых популярных видов — это 301-й.
301-й редирект (Moved Permanently) — это постоянный редирект. Используется для перемещения страницы на новый URL-адрес насовсем. Когда поисковые системы встречают страницу с редиректом 301, они «понимают», что теперь необходимо индексировать новую страницу, а старую можно полностью исключить из индексации. Если настроить переадресацию 301 некорректно, на странице будет отображаться ошибка 404. Индексация страниц с ошибками приводит к снижению SEO-показателей всего веб-ресурса.
Как сделать редирект через .htaccess
Чтобы сделать перенаправление 301 через .htaccess, перейдите в каталог сайта и откройте .htaccess. Если файла ещё не существует, создайте его. После этого добавьте в файл строки кода из подходящей инструкции ниже.
1С-Битрикс — популярная CMS в которой время от времени необходимо настраивать перенаправление.
- Если вы хотите переадресовать домен с WWW на без WWW, укажите:
Где www.site.ru — домен, с которого происходит редирект, а site.ru — домен, на который происходит редирект.
- Если вам нужно сделать редирект Bitrix с домена без WWW на WWW, введите комбинацию:
Где www. — домен, с которого происходит редирект, а www. — домен, на который происходит редирект.
- Если вы хотите настроить в Битрикс редирект на другую страницу с http:// на https://, пропишите:
В файл .htaccess, который находится в папке сайта, с которого необходимо сделать переадресацию, добавьте следующие строки:
- old-site.ru — домен, с которого происходит редирект;
- new-site.ru — домен, на который происходит редирект.
Добавьте в .htaccess следующие строки:
Где site.ru — имя вашего домена.
Добавьте в .htaccess следующие строки:
Где site.ru — имя вашего домена.
Добавьте в .htaccess следующие строки:
Где site.ru — имя вашего домена.
Добавьте в .htaccess следующие строки:
Где site.ru — имя вашего домена.
Добавьте в .htaccess код из нужного вам примера ниже:
- Для всех страниц с http:// на https://
Для всех страниц с http:// на https://, в том числе и с http://www на https://
Если первый вариант не поможет, воспользуйтесь вторым вариантом:
Если все варианты не помогли и возникает циклическая переадресация:
Источник
301 редиректы с примерами
301 редирект — это постоянное перенаправление пользователя и поискового бота на другой адрес, отличный от изначально запрашиваемого.
Для чего нужен 301 редирект?
301 редирект — эффективный способ сохранить трафик, позиции, ссылочный вес страниц сайта при:
- удалении дубликатов страниц при изменении структуры сайта или когда страница становится неактуальной;
- переезде сайта, склейке страниц, находящихся на разных доменах;
- склейке основного зеркала сайта (www, https, index.php/index.html и т. д.).
Настройка 301 редиректов в файле .htaccess
Правило: все 301 редиректы в файле .htaccess лучше размещать после этих записей:
Options +FollowSymLinks
RewriteEngine On
301 редирект с одной страницы на другую
Вариант №1
Вариант №2 с помощью регулярного выражения:
Склейка основного зеркала сайта при добавлении www
Склейка основного зеркала сайта при удалении www
Склейка верхнего регистра с нижним
301 редирект со страниц со слешем на страницы без слеша (весь сайт)
301 редирект со страниц без слеша на страницы со слешем (весь сайт)
301 редирект с http на https для всего сайта
Вариант №1
Вариант №2
Вариант №3
Вариант №4
301 редирект с https на http для всего сайта
Вариант №1
Вариант №2
Массовая склейка. 301 редирект для index.php, index.html или index.htm
301 редирект с домена на домен
301 редирект только адреса site.com/index.php (без GET-параметров) на основное зеркало site.com
301 редирект для конкретного файла, а не всей папки
Если требуется настроить редирект только для адреса http://www.site.com/files/, но при этом надо, чтобы страница http://www.site.com/files/index.php?IBLOCK_ID=16 открывалась по старому адресу, необходимо использовать символ $ в правиле.
Редирект со всех файлов домена, кроме папки администратора bitrix
RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301]
RewriteRule ^(.*)$ http://www.site.com/folder/ [L,R=301]
301 редирект с поддомена на основной домен
301 редирект каждой страницы одного домена на такой же адрес другого URL
301 редирект всех страниц одного домена на главную страницу другого домена
301 редиректы в зависимости от GET-параметра: примеры
Пример №1
site.com/page.html?ref=text → site.com/page.html
Пример №2
site.com/page?file=text&doc=next → site.com/page?doc=next
Пример №3
site.com/component/content/?information=file → на главную страницу site.com
RewriteCond %
^information=file $ [NC]
RewriteRule ^component/content/$ /? [R=301,L]
Пример №4
С site.com/index.php?idc=4&marea=6 → на главную страницу site.com
Пример №5
С site.com/index.php?route=feed/latest_products_rss¤cy=GRN → на главную страницу site.com
Пример №6
С site.com/information/information?information_id=64 → на главную страницу site.com
RewriteCond %
information_id=64$
RewriteRule ^information/information$ /? [L,R=301]
301 редиректы кириллическими URL-адресами
1. Преобразование кириллических символов в Punycode. Пример сервиса, который может решить эту задачу: https://hb.by/punycode-converter.aspx.
2. Если не работает через Punycode, то можно сделать регулярным выражением, например:
RewriteRule ^услуги/оценка-недвижимости/оценка-квартиры/$ https://site.com/ocenka-kvartiri [R=301,L]
Надо добавлять в начало .htaccess и сохранять файл в кодировке UTF-8 без BOM.
3. Еще один вариант — поместить кириллические URL-адреса в кавычки:
Сервисы для проверки редиректов
Одна из главных ошибок —проверка настроенных редиректов в браузере, когда может подтягиваться кэш, из-за которого изменения не вступают в силу. Лучше использовать специальные сервисы, их довольно много. Введите в поисковик запрос “проверка редиректов онлайн” и перейдите на первые сайты, например:
Важно: если что-то не сработало, лучше проверить с помощью нескольких сервисов. Бывают случаи, когда какой-то из сервисов сразу не отдает правильный результат.
Если у вас возникли проблемы с редиректами, внимательно прочитайте статью еще раз 🙂 Или оставляйте комментарий, а мы постараемся помочь вам в этом.
Источник