Как прописать редирект 301: www на без www, http на https, с домена на другой домен

Как прописать редирект 301: www на без www, http на https, с домена на другой домен

Содержание

www на без www, http на https, с домена на другой домен

Опубликовано: 29 августа 2014

Обновлено: 25 июня 2020

678 011

Три важных совета и семнадцать конкретных примеров установки 301 переадресации страниц через htaccess!

301 редирект

Советы

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

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

Не забывайте, что многие браузеры кешируют (запоминают редиректы), поэтому проверять переадресации лучше на сайте – http://www.bertal.ru.

В файле обязательно должна присутствовать команда:

RewriteEngine On  

Второй способ сделать редирект – это переадресация через php

Правила переадресаций

1. 301 редирект с одной страницы на другую

Самый простой вариант

Redirect 301 /test-1/ http://site.ru/test-2/

Более подробный

RewriteCond %{REQUEST_URI} ^/test/$
RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]

2. 301 редирект с www на без www (главное зеркало – домен без www)

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

3. 301 редирект с без www на www (главное зеркало – домен с www)

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

4. 301 редирект со страниц со слешем на без слеша (весь сайт)

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

5. 301 редирект со страниц без слеша на слеш (часто в CMS системах устанавливается автоматически)

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

6. Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы

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

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

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

7. Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы

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

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

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

8. Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы

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

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

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

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

9. Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы

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

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

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

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

10. 301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru

RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{QUERY_STRING} ^\z
RewriteRule ^(.*)$ http://site.ru/? [R=301,L]

11. 301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)

Пример: типа site.ru/index.php?n=1 на site.ru/?n=1

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

12. 301 редирект для index.php, index.html или index.htm (например в Joomla), массовая склейка

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ 
RewriteRule ^(.*)index\.(php|html|htm)$ http://site.ru/$1 [R=301,L]

13. 301 редирект url с GET параметрами (динамический URL) на статический

1 вариант (простой адрес с GET параметром)

RewriteCond %{QUERY_STRING} ^id=229
RewriteRule ^.*$ /supermodel/? [R=301,L] 

2 вариант (со страницы и GET параметром)

RewriteCond %{REQUEST_URI} /test/
RewriteCond %{QUERY_STRING} ^id=229
RewriteRule ^.*$ /supermodel/? [R=301,L] 

14. Все страницы одного домена на главную страницу другого домена

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

15. Каждая страница одного домена на такой же адрес другого url

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

16. Редирект с протокола http на https.

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

Если возникает циклический редирект, то воспользуйтесь этим вариантом:

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

Для Битрикс-сайтов на хостинге reg.ru

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Для сертификатов https c Cloudflare:

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
# Without Cloudflare:
# RewriteCond %{HTTPS} off 
RewriteRule ^ https://www.example.com%{REQUEST_URI} [NE,R=301,L]

17. Редирект с протокола https на http.

Обратный редирект, если перестали использовать SSL сертификат.

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

Может быть полезно:

Редирект 301 в htaccess, как настроить правильную переадресацию или 301 redirect

Редирект 301 или 301 Permanent Redirect — это правило, которое автоматически переадресовывает пользователя на другой адрес страницы. С его помощью вы можете склеить старые страницы с новыми или перенести сайт на другой домен, убрать многие дубли с сайта и многое другое. Крайне полезная вещь — поэтому нужно научиться делать его правильно!

Так же при 301 редиректе происходит склейка тИЦ (читаем что такое тиц) и PR — т.е. вы можете сохранить старое значение на новом адресе. Вы можете нисколько не потерять в глазах поисковых систем. Давайте перейдем от теории к практике.

Как настроить 301 редирект в htaccess

Файл под названием .htaccess находится в главной категории вашего сайта. Это служебный файл, в котором мы будем указывать правила склейки. Открываем файл блокнотом (рекомендую notepad++, чтобы не было проблем с кодировкой). Не забывайте, что это один из важных пунктов в работе SEO специалиста.

Общий шаблон для .htaccess, которым мы будем пользоваться:

Options +FollowSymLinks
  RewriteEngine On
  #Здесь указываем правила

Все правила записываются в виде:

RewriteCond [Сравнение] [Условие] [Флаги]
RewriteCond [Сравнение] [Условие] [Флаги]
RewriteRule [Шаблон] [Подстановка] [Флаги]

Теперь непосредственно займемся переадресацией и разберем конкретные примеры.

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

Примеры использования 301 редиректа

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

Чтобы настроить его вам нужно прописать в вашем файле следующий код, который будет перенаправлять посетителей с адреса site.ru/index.php на site.ru:

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

Если вам так же нужно сделать переадресацию с index.html, то просто в коде выше замените .php на .html

Склеиваем алиасы сайта

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

RewriteCond %{HTTP_HOST} ^vash-sait.com$ [OR,NC]
RewriteCond %{HTTP_HOST} ^www.vash-sait.com$ [NC]
RewriteCond %{REQUEST_URI} !^/robots.*
RewriteRule ^(.*)$ http://vash-sait.ru/$1 [R=301,L]

Обратите внимание на первые 2 строки, там указано зеркало в зоне .com, если у вас иная или несколько зон, то добавляем правила.

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

Этот способ я уже описывал ранее, но повторюсь. Для того, чтобы склеить зеркала и выбрать основным домен без www прописываем:

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

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

Это действие противоположное предыдущему, только основное зеркало здесь www.site.ru:

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

301 редирект страниц со слэшем и без

Это еще один вид дублей, тут мы склеим страницы site.ru/category/ и site.ru/category, как видите, в конце второго урла не стоит слэша:

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

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

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

Если у вас по какой-то причине появились урлы типа site.ru/category//article.html, то юзаем код:

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

где, «//» можно заменить на «—» или любые сдвоенные символы в урле.

Массовая замена категории

Бывает, что вы переименовали категорию, а за ней закреплены тысячи урлов. Чтобы не состарится во время написания тысяч одинаковых перенаправлений юзаем:

RewriteRule ^(.*)/old-category/(.*)$ $1/new-category/$2 [R=301,L]

Если у вас категория идет сразу после домена (типа site.ru/category/), то используем другой вариант:

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

Редирект на новую страницу

Самый простой редирект со страницы на страницу, для это просто пропишите так:

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? [R=301,L]

Работаем с расширениями

Убираем .html из url (для удаления .php не забудьте заменить $1.html на $1.php):

RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]

Меняем .php на .html в урлах и наоборот (не забываем поменять местами в коде):

RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html

Правильный 301 редирект на новый домен

Этот пункт я выделил отдельно, т.к. он больше связан с переносом на другой домен. Тут есть важный момент, это не упустить директиву по правке роботса — она указана на 3 строке кода.

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

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

Если у вас появились какие-то вопросы, пишите в комментарии — будем разбираться 🙂

Понравился пост? Сделай репост и подпишись!

Как сделать 301 редирект в .htaccess: переадресация страниц

Есть проблемы с ранжированием, проект не растет, хотите проверить работу своих специалистов по продвижению? Закажите профессиональный аудит в Семантике

Получи нашу книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

Подпишись на рассылку и получи книгу в подарок!

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

301 Permanent Redirect / 301 редирект…

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

Есть мифы, связанные с редиректами: например, что при редиректе не передаётся PR страницы, но этот миф был развенчан одним из вебмастеров Google Джоном Мюллером в своем блоге. Или что вместо 301 Moved Permanently редиректа можно использовать 302 Temporary Redirect.

301

 

 

Существует целый класс 3хх редиректов. Наиболее часто используются коды 301 и 302 — они как двойняшки, которые вроде бы и похожи, но всё-таки различаются. А для поискового робота это два совершенно разных человека, и трактуются такие ответы сервера по-разному:

  1. 301 Moved Permanently: постоянный редирект. Этот код уведомляет о том, что ресурс перемещен на новый адрес на постоянной основе с удалением прошлого домена. Нужен для окончательного переезда на новый ресурс, новую CMS или для склейки страниц.
  2. 302 Temporary Redirect: временный редирект. Уведомляет о временном переезде сайта или его страницы. Используется при технических работах на сайте.

Как эти коды отразятся на выдаче:

  • При 301 редиректе в поисковой выдаче начинает отображаться новый URL, но это может занять некоторое время. Google советует сохранять статус страницы в течение года.
  • При 302 редиректе в поиске сохраняется старый URL страницы, но через 6 месяцев использования 302 редиректа поисковая система начинает считать его за постоянный 301, т.к. временное перенаправление не зря названо «временным», а полгода — достаточно большой срок.

Из-за подобных ошибок вебмастеров и злоупотребления 302 редиректом в неэтичных целях SEO-специалисты очень не советуют использовать его на своём сайте, ведь даже за небольшое подозрение в черном SEO вы можете схлопотать серьезный штраф. Давайте лучше разберемся как можно настроить легальный 301 редирект в .htaccess

50970803

 

Файл .htaccess — это файл конфигурации HTTP-сервера, наподобие Apache. С его помощью задается большое количество дополнительный параметров и разрешений веб-сервера, распространяет свои права только на каталог, в котором располагается, и его дочерние подкаталоги.

 

Самый простой пример редиректа: с сайта на сайт

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.

  1. RewriteEngine включает или выключает работу механизма преобразования:

RewriteEngine on | off

Положение on-off включает и выключает работу модуля.

2. RewriteCond — определяет условие какого-либо правила, при котором происходит преобразование. Сразу после директивы чаще всего идут переменные %{HTTP_HOST} и %{REQUEST_URI}, которые означают адрес сервера (например, example.ru) и ресурс, запрошенный в строке HTTP-запроса, соответственно.

3. RewriteRule — идёт после одного или нескольких RewriteCond. Это правило преобразования URI, которое применяется только при условии выполнения RewriteCond.

Синтаксис директивы RewriteRule выглядит следующим образом:

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

 

Здесь стоит дать пояснение к используемым символам регулярного выражения, которое задает шаблоны строк:

Метасимволы используются для задания групп символов и меток в шаблоне:

  • ^ — метка начала строки,
  • $ — метка конца строки,
  • \ — экранирующий слеш, позволяет считать следующий за ним метасимвол обычным символом,
  • . — точка, обозначает любой символ, но только один,
  • () — группировка.
  • ! — отрицание,

Флаги определяют дополнительные опции для данного правила и перечисляются в квадратных скобках через запятую:

  • NC — (nocase) отключает проверку регистра символов.
  • R — (redirect) останавливает процесс преобразования и возвращает результат браузеру клиента как редирект на данную страницу (302, MOVED TEMPORARY). С данным флагом можно указать другой код результата, например R=301 возвратит редирект с кодом 301 (MOVED PERMANENTLY).
  • L — (last) останавливает процесс преобразования, и текущая ссылка считается окончательной.

 

Как сделать 301 редирект? 

Теперь, зная эти правила, мы можем попытаться самостоятельно сделать редирект с помощью htaccess.

  1. Редирект .htaccess на другую страницу
Redirect 301 /old-post.html http://new-site.ru/new-post.html

 

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

RewriteEngine on

RewriteCond %{HTTP_HOST} !^site.ru$ [NC]

RewriteRule ^(.*)$ site.ru/$1 [R=301,L]

 

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

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www.site.ru$ [NC]

RewriteRule ^(.*)$ www.site.ru/$1 [R=301,L]

где site.ru — ваше доменное имя.

 

  1. Редирект с index.php (html) на главную страницу

RewriteEngine on

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/

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

 

  1. Редирект со слешем на без слеша

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

 

  1. Редирект со страниц без слеша на слеш

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

 

  1. Редирект всех страниц одного домена на главную другого домена

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

 

  1. Редирект с http на https через. htaccess

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

 

  1. Редирект с https на http

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

 

  1. Избавление от дублей страниц

Если вы заметили, что к адресу основной страницы приклеивается что-то вроде &sa=123 456 или &crw=123 456 и подобное, просто замените буквенную часть в следующем коде


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

Пример: объясняем на пальцах

Как с помощью 301 редиректа сделать так, чтобы по запросу site.ru/category/art1/zapis/ в строке адреса было site.ru/zapis/, то есть /category/art1 вырезалась бы из строки, но после вырезания строки показывалось содержимое site.ru/category/art1/zapis/?

Легко:



RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^category/art1/zapis/$ http://%{HTTP_HOST}/zapis/ [R=301,L]
RewriteRule ^zapis/$ /category/art1/zapis/ [L]


А теперь давайте подробнее разберем, что же тут написано и что вообще происходит.

Как известно mod_rewrit на apache постоянно просматривает список правил, пока URL можно хоть как-то изменить.
И не редко получаются бесконечные циклы.

Чтобы ограничить цикл выполнения правил одной итерацией, можно использовать конструкцию из первой строки. Она предает apache статус был ли выполнен редирект или нет и если да, то пропустить следующие правила. К слову, на nginx эта строка не нужна.

Вторая строка делает 301 редирект с www.site.ru/category/art1/zapis/ на www.site.ru/zapis/
Третья же строка говорит серверу, что если адрес вида www.site.ru/zapis/, то надо показывать то, что находится по адресу www.site.ru/category/art1/zapis/

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

66298036

 

 

  1. Принцип «от меньшему к большему»: располагайте редиректы от частных к более глобальны. Т. е. переадресация со страницы на страницу будет выше, чем переадресация с без www на www.
  2. Избегайте последовательных — двойных, тройных — редиректов. Один редирект перенаправляет пользователя только один раз.
  3. Проверьте HTTP заголовки и статусы ответа сервера, чтобы убедиться в правильности работы редиректа.

 

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

 

Когда редирект необходим

  1. Вы переехали на другой домен: и вам логично не хочется потерять своих клиентов — настоящих и потенциальных, а также есть необходимость передать вес прошлого сайта на новый.
  2. Хотите склеить зеркала: у вас несколько доменных имён с разным написанием бренда и вы перенаправляете всех посетителей на основной сайт.
  3. Страница сменила свой адрес: структура вашего сайта была реорганизована и вы пытаетесь предотвратить возможный беспорядок.
  4. Хотите избавиться от дублей страниц или копии сайта: не стоит относится к дублям как чему-то безвредному и незначительному. С дублями вы теряете в весе и сдаете позиции конкурентам, а так же дублирование контента может привести к штрафам от поисковых систем.

 

tumblr_mep7yupgin1qm3atlo1_500

 

В каких случаях не нужно использовать редирект?

  1. Вы временно переезжаете на новую страницу: для этого есть 302 и 307 код, это гарантия того, что не произойдёт склейки страниц и оригинальная страница не выпадет из поисковой выдачи.
  2. Вы переезжаете из-за проблем со старым доменом: если у вас есть баны, фильтры и штрафы, то при склейке к вам перейдет не только ТИЦ и PR, но и все беды, от которых вы бежали.

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

Всем привет! Сегодня на SEO-Mayak.com довольна сложная и интересная тема. Многие, почти все начинающие блогеры даже понятия не имеют, что такое 301 редирект. Я как-то уже касался этой темы в статье про дубли контента и теперь мы рассмотрим ее поподробней.

Что такое 301 редирект? Это специальный код, который возвращает сервер при обращении к определенному URL.

Что это значит? Это значит, что если вы набрали в адресной строке браузера определенный URL, то Вас перенаправят на новый адрес.

Для чего это все нужно? Возьмем пример из реальной жизни. Заходите вы по определенному адресу, а вам говорят — «А здесь теперь такие не живут! Они совсем своим имуществом переехали на другую улицу и вот Вам их новый адрес…» Согласитесь полезная информация? Я не зря сказал — «…со все своим имуществом» т.е они не чего не оставили на старом адресе. Это важно!

redirekt 301

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

Прописываем 301 редирект в файле .htaccess

Чтобы выполнить сие действие надо в файле .htaccess прописать следующее:

  1. Redirect 301 / http://новый сайт.ru

Где «/» означает, что все начиная с «головы» сайта включая все подкаталоги будет переадресовано на новый адрес.

Не забудьте сделать резервную копию сайта если вдруг что-то пойдет не так!

Теперь рассмотрим другую ситуацию. У меня есть 2 квартиры, а живу я лишь в одной. Ко мне приходят письма по другому адресу, звонит телефон, заходят разные люди и т.д. А я забыл повесить объявления, что нахожусь я вообще в другом месте. Забавная история! Получается я теряю собственные авторитет в глазах окружающих из-за своей забывчивости.

Из этого вывод. Надо непременно указать поисковому роботу точный адрес проекта, например: www.сайт.com или просто сайт.com потому, что это два разных адреса.

Как это осуществить смотрите на этом примере:

Перенаправление с www на без www

  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteCond %{HTTP_HOST} ^www.сайт\.com$ [NC]
  4. RewriteRule ^(.*)$ http://сайт.com/$1 [R=301,L]

Перенаправление с без www на с www

  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteCond %{HTTP_HOST} ^сайт\.com$ [NC]
  4. RewriteRule ^(.*)$ http://www.сайт.com/$1 [R=301,L]

Надо заметить, что если в файле .htaccess уже прописана строчка RewriteEngine On, то ее повторять уже не надо и не забудьте вписать свой домен.

Существует мнение, что с защищенного протокола https:// также надо перенапралять пользователей на основной протокол http:// Я даже обратился в службу поддержки своего хостинг провайдера с этим вопросом. На что мне ответили, что возможность перенаправления есть и для этого в файле .htaccess необходимо прописать следующее:

  1. RewriteEngine On
  2. RewriteCond %{SERVER_PORT} ^443$ [OR]
  3. RewriteCond %{HTTPS} =on
  4. RewriteRule ^(.*)$ http://ваш сайт.com/$1 [R=301,L]

Бывает такие случаи, что необходимо перенести только одну страницу при этом сохранить ее вес. Для этого в файле .htaccess прописываем:

  1. Redirect 301 /путь/пост.html  http://новый сайт.com/пост.html

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

До встречи!

С уважением, Виталий Кириллов

Как сделать 301 редирект (переадресацию) через htaccess в 2020

Редирект (перенаправление или форвардинг) —позволяет автоматически переадресовать пользователя, посетившего страницу А на страницу Б. Например, пользователь, пытающийся открыть страницу site.ru/page1/ будет попадать на site.ru/page2.

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

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

Redirect 301 site.ru/page1/ site.ru/page2/

Где:

  • page1- страница которая будет переадресовывать;
  • page2 – открывающийся документ.

Важно! Можно записывать адреса в относительном виде, например, /page1/ и /page2/.

Также допускается использование конструкции:

Redirect permanent site.ru/page1/ site.ru/page2/

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

Файл htaccess на сервереФайл htaccess на сервере

Вводим нужное нам правило.

прописанный редирект в htacessпрописанный редирект в htacess

Как проверить работу 301 редиректа?

Для этого можно использовать инструмент проверки ответа сервера Яндекса:

https://webmaster.yandex.ru/tools/server-response/

Здесь вводим адрес первой страницы и видим следующее:

Проверка 301 редиректа через сервисПроверка 301 редиректа через сервис

Как видим правило применилось и работает корректно.

Как сделать перенаправление на другой домен?

В этом случае необходимо автоматически перекидывать всех пользователей с домена domain1.ru на domain2.ru при помощи функции:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.ru$

RewriteRule ^(.*)$ http://www.domain2/$1 [R=301,L]

Переадресация с http на https

При переезде сайта с http на https (установка SSL-сертификата) потребуется код, который не требует дополнительных модификаций:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

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

Второй метод осуществляет перенос с http://domain.ru на https://domain.ru:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{HTTP_HOST} ^domain\.ru$

RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]

Третий способ выполняет аналогичную функцию, но отключает перенаправление для robots.txt:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{REQUEST_URI} !robots.txt

RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]

В 4-й версии конечным пунктом для пользователя станет https://www.domain.ru:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{HTTP_HOST} ^domain\.ru$

RewriteRule ^(.*)$ https://www.domain.ru/$1 [R=301,L]

Позволяет сделать форвардинг с http://www.poddomen.domain.ru на https://poddomen.domain.ru:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ https://poddomen.domain.ru/$1 [R=301,L]

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

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

Последняя версия, дающая возможность сделать связь между http://poddomen.domain.ru на https://www.poddomen.domain.ru:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ https://www.poddomain.domain.ru/$1 [R=301,L]

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

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

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

В функции ниже осуществляется переход из www.poddomen.domain.ru на poddomen.domain.ru:

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]

</IfModule>

Если же первый способ не помог можно использовать данную версию:

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} !^poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]

</IfModule>

С www на без WWW

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ http://www.poddomen.domain.ru/$1 [R=301,L]

</IfModule>

Также имеется второй метод не требующий ввода доменного имени:

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]

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

</IfModule>

C https на http

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

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} 1 [NC]

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

301 редирект на http для одной страницы

В этой ситуации подойдет:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} 1 [NC]

RewriteCond %{REQUEST_URI} ^/нужная-страница$

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

Второй метод осуществляет общий переезд на защищенный протокол (https), но одна страница останется на старом протоколе (http). Этот способ подойдет для интеграции 1С Bitrix с 1С Предприятие, так как система не может работать с защищенным протоколом:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{REQUEST_URI} !^/необходимая-страница$

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

RewriteCond %{HTTP:X-HTTPS} 1 [NC]

RewriteCond %{REQUEST_URI} ^/необходимая-страница$

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

Для готовой интеграции с 1С-Битрикс, формула позволяющая исключить директорию bitrix/admin/1c_exchange.php из общего правила:

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteCond %{HTTP:X-Forwarded-Proto} !https

RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC]

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

Форвардинг на https для конкретной страницы

Для этой цели можно воспользоваться:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{REQUEST_URI} ^/Необходимая директория_страница$

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

С несуществующего файла

В этом случае можно будет применить:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www.)?domain.ru$

RewriteCond %{REQUEST_URI} ^/robots.txt$

RewriteRule ^(.*)$ /poddomen/script.php [R=301,L]

Также подойдет второй способ:

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} !^poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]

Перенаправление на подкаталог

В этом случае возможно пербрасывать пользователей с poddomen.domain.ru на подкаталог poddomen.

Способ 1:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/poddomen
RewriteCond %{HTTP_HOST} ^poddomen.domain.ru$ [NC]
RewriteRule ^index.php(.*)$ /poddomen/$1 [L,QSA]

Способ 2:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^poddomen.domain.ru$
RewriteCond %{REQUEST_URI} !/poddomen/
RewriteRule ^(.*)$ /poddomen/$1 [L]

В случае, когда речь идет о www.poddomen.doamin.ru необходимо применить:

RewriteEngine on

RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?poddomen\.domain\.ru$

RewriteCond %{REQUEST_URI} !/poddomen/

RewriteRule ^(.*)$ /poddomen/$1 [L]

С любой страницы на главную

В этой ситуации поможет:

RewriteEngine On
RewriteBase /

RewriteRule ^(.*)$ index.php [L,QSA]

С поддомена на основной домен

Если требуется выполнить условие для всех поддоменов без исключения:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(.+).domain.ru$
RewriteRule (.*) http://site.ru/$1?region=%1 [L,R=301,QSA]

Когда речь идет о конкретном поддомене следует использовать:

RewriteEngine On
RewriteBase /

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

Как сделать 301 редирект в htaccess, как настроить

Redirect 301Redirect 301

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

Что такое 301 редирект и где он может пригодится

301 редирект – это некое автоматическое перенаправление с одной страницы на другую, причем при этом редиректе передается все: вес страницы, тИЦ, PR, вес входящей ссылочной массы и прочее. То есть происходит склеивание старой страницы с новой. Пользователь, попавший на старую страницу, автоматически “перебросится” на новую.

Где может пригодится 301 редирект:

  • Решили вы переехать на новый домен. В таком случае, наиболее безболезненно это можно сделать как раз с помощью данного вида перенаправления.
  • Был у вас сайт на каком-нибудь движке (допустим, Joomla). Страницы имели адрес site.ru/?id=1245. На WordPress та же самая страница у вас выглядит так site.ru/rubrika/post.html. И, чтобы не потерять показатели старых страниц, необходимо сделать 301 редирект на новые страницы.
  • Ваш сайт доступен по 2-м адресам, например с www и без www. В таком случае тоже нужно прописать 301 редирект.
  • Контент на старой странице нужно перенести на новую страницу. Или, например, 3 маленьких статьи нужно объединить в одну большую. В подобных случаях тоже лучше перенести на 1 из 3-х URL, а на оставшихся двух прописать редирект 301.

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

Я предпочитаю делать 301 редирект с помощью файла htaccess. При чем он существует не только на WordPress сайтах, поэтому данный метод перенаправления – универсальный. Файл .htaccess лежит в корне сайта:

301 редирект301 редирект

Редактируется данный файл с помощью текстового редактора, лучше использовать Notepad++.

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

С WWW на без WWW (и наоборот)

Сайт должен быть доступным только по одному варианту: либо с WWW, либо без WWW. Неправильно, если сайт “отдается” по двум вариантам. Нужно оставить только один.

Если сайт молодой, выберите лучше без WWW, если же старенький, то лучше остановиться на том варианте, который проиндексирован. Бывает так, что в Яндексе проиндексировано с WWW, а в Google без WWW, в таком случае выберите тот вариант, который “вылез” в наиболее приоритетной поисковой системе для вас.

Поймите, www.site.ru и site.ru для поисковых систем это 2 разных сайта, поэтому должен быть доступен только 1 вариант! С WordPress обычно с этим проблем нет, там по умолчанию доступен только 1 вариант, а вот на других движках часто можно видеть, что сайт доступен и так, и так.

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

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

301 редирект с сайта без www на с www:

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

С одной страницы на другую с помощью htaccess

При необходимости простановки 301 редиректа с одной страницы на другую, нужно прописать вот этот код в файле htaccess:

Redirect 301 /staraya-stranica.html http://site.ru/novaya-stranica.html

С index.php (index.html) на корень (главную страницу)

На некоторых движках можно встретить, что главная страница сайта также доступна по адресу: site.ru/index.php. Это неправильно. Нужно, чтобы данная страница отдавала 301 редирект на главную страницу, вот как это делается (не забываем переписывать “site” на свой домен).

Если c index.php:

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

Если с index.html:

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

С http на https:

Если вам нужно прописать 301 редирект с http на безопасный протокол httpS, используйте вот этот код:

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

С одной категории (директории/папки) на другую

Бывает необходимость, когда все страницы определенной категории, нужно перенаправить по другому адресу, вот код:

RedirectMatch 301 ^/category-old/(.*) /category-new/$1

С одного домена на другой

Если вы вдруг переехали на новый домен, то нужно в htaccess старого домена прописать это:

RewriteEngine On
RewriteCond %{HTTP_HOST} old-domen.ru
RewriteRule (.*) http://new-domen.ru/$1 [R=301,L]

Также в robots.txt обязательно укажите в директиве host новый адрес сайта.

301 редирект на WordPress с помощью плагина Simple 301 Redirects

Если сайт клиента на WordPress и он сам хочет в некоторых местах прописать 301 редиректы, я ставлю плагин Simple 301 Redirects. Да и для новичков он хорошо подойдет. Плагин очень прост в использовании и все делается в привычной админке WordPress, поэтому данный способ может показаться кому-то более легким.

  1. Устанавливаем плагин Simple 301 Redirects.
  2. Захотим в админке “Параметры” -> “301 Redirects”:
    301 редирект в WordPress301 редирект в WordPress
  3. Там уже, как и в случае с файлом htaccess, нужно прописать старый URL (без домена) и новый с доменом:
    301 редирект htaccess301 редирект htaccess
  4. Также можно прописать редирект всех страниц в категории. То есть, допустим, было у нас /7-1-products/ и мы хотим сделать /products/, то просто сначала там же на странице плагина ставим галочку перед “Use Wildcards?”:
    Как сделать 301 редиректКак сделать 301 редирект
  5. И уже потом можно прописать подобное, используя “звездочку”:
    301 редирект: как настроить301 редирект: как настроить
  6. В итоге, все статьи, которые находились в начальной рубрике будут переадресовываться на новый вид категорий.

Вывод

После того, как пропишете 301 редирект, обязательно проверьте сайт на работоспособность. Одна маленькая ошибка может сделать весь ваш сайт недоступным. Обязательно перед изменениями файла htaccess делайте его резервные копии, ну либо пользуйтесь CTRL+Z, чтобы вернуть файл в исходное положение.

Еще: учтите, что вес по 301 редиректу передается не сразу. Да, в Google склейка происходит быстрее, но в Яндексе это все происходит медленно. Нужно ждать обычно от 1 до 3-х месяцев.

Не забудьте добавить данную страницу в закладки, пригодится. Ну и конечно же спасибо за ретвиты.

30+ примеров настройки 301 редиректа в .htaccess

Популярные примеры правильной настройки 301 редиректа в файле .htaccess. Советы по добавлению редиректов.

Полезные советы

  • Современные браузеры по умолчанию используют кеширование для редиректов. Чтобы проверить работу редиректа необходимо очистить кеш в браузере или использовать любой сторонний сервис по проверке кода ответа сервера.
  • Нежелательно создавать цепочки редиректов. При медленной работе сервера это вызовет недовольство пользователя. Поисковые роботы также не любят последовательные редиректы — вес исходной страницы может не передаться.
  • При составлении файла .htaccess простые директивы должны идти раньше сложных, которые распространяются на весь сайт. Такая компоновка будет более удобной при работе с файлом и поможет избежать путаницы.

Наиболее популярные правила

Приведенные примеры работают для серверов функционирующих на APACHE, для NGINX настройки в файле .htaccess работать не будут. В примерах используется %{QUERY} — так обозначается часть URL, которая следует после знака вопроса. Правила для редиректа срабатывают только при условии соответствия правилу указанному в редиректе.

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


Options +FollowSymLinks
RewriteEngine On

301 редирект все страниц без WWW на страницы с WWW


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

Обратный редирект со страниц с WWW на страницы без WWW


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

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


Redirect 301 /oldpage.html http://mysite.ru/newpage.html

Переадресация для разделов через RewriteRule


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

301 редирект для страниц имеющих Get-параметры в URL

Для наглядности примера допустим адрес страницы имеет вид http://mysite.ru/catalog/index.php?IBLOCK_ID=5&SECTION_ID=15. Следующее правило будет делать переадресацию:


RewriteCond %{QUERY} ^IBLOCK_ID=5&SECTION_ID=15$ [NC]
RewriteRule ^catalog/index\.php$ /newcatalog/? [R=301,L]

Иногда необходимо настроить редирект для изменяющихся Get-параметров, например в текущем примере динамическим параметром будет SECTION_ID:


RewriteCond %{QUERY} ^IBLOCK_ID=5&SECTION_ID=(.*)$ [NC]
RewriteRule ^catalog/index\.php$ /newcatalog/? [R=301,L]

Переадресация со страниц без значения Get-параметра

Например адрес страницы имеет вид — http://mysite.ru/?addon, тогда редирект будет следующим:


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

Переадресация одного адреса, без вложенных адресов

Например довольно часто необходимо настроить переадресацию со страницы раздела http:/site.ru/razdel/, однако прочие страницы в данном разделе должны работать без редиректа, например страница http://mysite.ru/razdel/section.php?SECTION_ID=1. Для этого нужно добавить всего один символ — $.


RewriteRule ^razdel/$ http://mysite.ru/new-razdel/ [R=301,L]

Настройка кириллических доменов .РФ

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

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


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

Правило для доменов .РФ


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

Редирект на папки со слешем на конце


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

Редирект на папку без слеша — убираем слеш на конце


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

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

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

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

Для примера возьмем в исключение папку панели администратора в CMS Bitrix


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

Переадресация всех файлов папки на конкретный файл


RewriteRule ^papka(.*)$ /my-file.html [L,R=301]

Переадресация файлов папки на другой файл с исключением


RewriteRule ^papka/file.html /new-file.html [L,R=301]
RewriteRule ^papka(.*)$ /my-file.html [L,R=301]

Редирект замены расширений файлов — с html на php


RedirectMatch 301 (.*)\.html$ http://newsite.ru$1.php

Указываем порядок загрузки индексных файлов в корне


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

Редирект с index.php на корень сайта


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

Редирект всех индексных страниц на корень


RewriteRule ^(.*)index\.php$ http://mysite.ru/$1 [R=301,L]

Переадресация с поддомена на основной домен


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

Редирект страницы из различных директорий

Если в разных папках сайта лежит файл с одинаковым названием, то настроить переадресацию этих файлов на один.


RewriteRule [^abc]/nash-file.php /nash-file.php [R=301,L]

Создаем ЧПУ-копию динамических страниц

Для страницы появится обычный URL без передачи Get-параметров.


RewriteRule ^catalog/okno/?$ /firma/okna/detail.php?ID=123 [NC,L]

Переадресация с https на http

Необходимое правило для решения проблемы с дублями страниц в поисковых системах.


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

Настройка ответа 403 для спама по REFERER

Данное правило позволяет не пускать на сайт спамный трафик с других сайтов:


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

Обработка ошибки 404 в .htaccess

Для поисковых систем очень важно получать код ответа 404 для несуществующих страниц

ErrorDocument 404 /404-for-me.php

Особенности настройки

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

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

Включение редиректа для определенных 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://m.mysite.ru/ [L,R=301]

Настройка редиректов для всех поисковых роботов


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-rank-site.ru/ [L,R=301]

Синтаксис и символы

  • . — Точка означает любой символ.
  • [abc] — перечень символов, совпадающих с буквами a, b, или с.
  • [^abc] — перечень символов, не входящих в диапазон. Условию соответствует любой символ, кроме a, b, с.
  • * — предыдущий символ может повторяться 0 и более раз.
  • [abc]* — найти символы из заданного набора идущие подряд.
  • [^abc]* — обратная операция.
  • .* — замена любого набора символов. «.*» — найти все подстроки между кавычками.
  • ^ — обознает начало строки (при использовании в начале выражения).
  • $ — конец строки.
  • \w — буква, цифра или подчёркивание _.
  • \d — любая цифра.
  • \D — любой символ, кроме цифр.
  • [0-9] — указание на любую цифру.
  • [a-z] — указание на любую букву от a до z с нижним регистром.
  • [A-Z] — указание на любую букву от A до Z с верхним регистром.
  • [a-zA-Z] — любая буква от a до Z, регистр не важен.
  • [a-Z] — тоже самое, только короче.

Флаги для доп. опций

  • NC — NoCase отключает проверку регистра символов при срабатывании правила.
  • R — Redirect останавливает изменение URL-адреса и возвращает результат. Самое популярное значение R=301, однако встречаются и другие для временных редиректов (302, MOVED TEMPORARY).
  • L — Last останавливает создание URL-адреса и строка считается окончательной.

Как настроить 301 редирект

Общий

VPS

Выделенный

WP Enthusiast

WP Professional

WP Professional Plus

Что такое 301 редирект?

Редирект 301 — это способ навсегда перенаправить трафик со старого URL-адреса на новый. Если компания переходит на новый веб-сайт, может быть трудно достучаться до всех клиентов об изменении (и еще сложнее заставить их запомнить).

Редирект 301 решает проблему, перенаправляя весь трафик со старого URL-адреса на новый. Таким образом, клиенты, которые случайно перейдут на старый сайт, автоматически перейдут на новый, даже если URL-адреса отличаются.

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

Если у вас есть учетная запись хостинга WP Professional или WP Enthusiast , 301 редирект будет настроен по-другому.Перейдите в раздел WP Hosting 301 Redirects, чтобы узнать, как мы рекомендуем его настроить.

Доступ к вашему файлу .htaccess

Общий

VPS

Выделенный

  1. Войдите в Центр управления учетными записями (ACC)
  2. Щелкните Домены на левой боковой панели
  3. Нажмите Управление доменными именами в раскрывающемся списке manage your domains
  4. Под доменным именем щелкните имя домена, который вы хотите перенаправить domain name image
  5. В разделе Веб-настройки щелкните Управление веб-настройками web settings image
  6. Если вы никогда не создавали.htaccess, нажмите Создать файл .htaccess. Если у вас уже есть файл .htaccess, щелкните Просмотреть или отредактировать файл .htaccess htaccess image

Оставьте имя файла как есть. Для работы он должен оставаться .htaccess .

Добавление 301 редиректа

WP Enthusiast

WP Professional

WP Professional Plus

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

на 301 перенаправить отдельную страницу:
 Redirect 301 /old-file.html http://www.domain.com/new-file.html
 

Добавьте эту строку в свой .htaccess. Замените old-file.html именем файла страницы, которую вы хотите перенаправить. Если файл не находится на верхнем уровне каталога, укажите путь к файлу перед /old-file.html .

Заменить http: // www.domain.com/new-file.html с URL-адресом, на который должна быть перенаправлена ​​страница.

на 301 перенаправить весь домен:
 Redirect 301 / http://www.new-domain.com/
 

Замените http://www.new-domain.com/ URL-адресом, на который вы хотите перенаправить свой сайт.

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

После завершения нажмите Создать файл для новых файлов или Сохранить изменения , если у вас уже был .htaccess.

WP Хостинг 301 Перенаправляет

Базовые пользователи

Создайте перенаправления, добавив на свой сайт плагин Simple 301 Redirect . Выполните следующие действия:

  1. Перейдите в каталог плагинов WordPress и найдите «Простое перенаправление 301» plugins image
  2. Нажмите кнопку Установить сейчас в поле надстройки install image
  3. Нажмите кнопку Активировать после завершения установки подключаемого модуля
    activate image
  4. Щелкните Параметры , затем щелкните 301 Перенаправления в раскрывающемся списке
    301 redirect image
  5. В разделе Re quest введите имя файла страницы, которую вы хотите перенаправить
  6. В поле Назначение введите URL-адрес, по которому страница должна быть перенаправлена ​​на

    Если вам нужно больше отформатировать имя файла и URL-адрес для перенаправления, щелкните ссылку

    Documentation внизу страницы.

    301 redirect image
  7. Нажмите Сохранить изменения
Опытные пользователи

Для более опытных пользователей WordPress заголовок PHP может быть отредактирован для создания перенаправления. Ознакомьтесь с документацией WordPress по функции wp_redirect , чтобы узнать, как это работает.

.

Руководство для начинающих по созданию 301 редиректа в WordPress (шаг за шагом)

Вы пытаетесь создать редирект в WordPress? Не знаете, что такое редирект и почему это важно? Не волнуйтесь, в этом руководстве для начинающих по редиректам WordPress мы расскажем, что такое перенаправление, как создать перенаправление в WordPress, зачем оно вам нужно и когда следует использовать перенаправления.

Готовы? Давайте начнем.

Website Redirects

Что такое перенаправление в WordPress?

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

Существуют различные типы перенаправления, такие как перенаправление 301, перенаправление 302, перенаправление 307 и т. Д.

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

Давайте посмотрим, почему это важно, на примере сценария использования.

Когда вам нужен редирект 301 в WordPress?

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

Идея этой статьи пришла к нам, когда один из наших читателей спросил нас, как перенаправить пользователей со старого сообщения на новое.

— Вам необходимо создать перенаправление, когда вы планируете удалить сообщение или страницу в пользу нового контента.

— Вам необходимо создать перенаправление, когда вы планируете изменить постоянные ссылки вашего сообщения или страницы.

Почему? Поскольку отсутствие перенаправления приведет к тому, что ваши пользователи увидят ошибку 404 not found. Это не только плохо для пользователей, но также может повлиять на SEO вашего сайта и снизить рейтинг в поисковых системах.

Вот когда переадресация 301 становится очень важной.

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

Это позволяет перенести весь трафик вашей старой страницы и сильные стороны обратных ссылок (SEO) на новую страницу.

Теперь, когда мы рассмотрели, почему и когда перенаправления, давайте посмотрим, как вы можете создать 301 редирект в WordPress, используя различные доступные методы.

Видеоурок

Подписаться на WPBeginner

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

Как создавать перенаправления в WordPress (используя плагины)

Более простой подход к созданию и управлению переадресацией 301 — использование одного из многих плагинов переадресации WordPress. Это позволяет настраивать перенаправления, даже не написав ни одной строчки кода.

1.Перенаправление

Самый простой способ добавлять перенаправления и управлять ими в WordPress — использовать плагин Redirection. Установите и активируйте плагин. После активации зайдите в Инструменты »Перенаправление , чтобы настроить перенаправления.

Setting up WordPress redirects using Redirection plugin

Плагин

Redirection не только позволяет настраивать перенаправления, но также помогает обнаруживать ошибки 404 на вашем сайте WordPress. Затем вы можете перенаправить эти URL-адреса в соответствующий пункт назначения. Посмотрите это руководство о том, как отслеживать 404 страницы и перенаправлять их в WordPress.

2. Ссылки на страницу с номером

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

Adding redirect link in post editor

3. Простая переадресация 301

Еще один простой в использовании плагин — Simple 301 Redirects. Как следует из названия, он упрощает переадресацию 301. Просто установите и активируйте плагин, а затем перейдите на страницу Settings »301 Redirects , чтобы добавить свои URL-адреса.

Adding redirects using Simple 301 Redirects plugin for WordPress

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

Если вы хотите ускорить перенаправление, вы можете сделать это с помощью метода кода и файла .htaccess.

Настройка 301 редиректа в WordPress с использованием .htaccess

Используя файл конфигурации веб-сервера .htaccess, пользователи WordPress могут настроить 301 быстрое перенаправление.

Имейте в виду, что небольшая ошибка в вашем коде .htaccess может сделать ваш сайт WordPress недоступным, и он может начать показывать внутреннюю ошибку сервера.

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

Чтобы отредактировать файл .htaccess, вам необходимо подключиться к своему веб-сайту с помощью FTP-клиента. Файл .htaccess находится в корневом каталоге вашего сайта WordPress.

Если вы не видите там свой файл .htaccess, вам нужно заставить FTP-клиент отображать скрытые файлы.(Узнайте, почему вы не можете найти файл .htaccess на своем сайте WordPress.)

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

Вот простое перенаправление, при котором мы пытаемся отправить пользователя, посетившего старую запись, на новую.

RewriteEngine On
Перенаправить 301 / a-very-old-post / http://yoursite.com/a-very-new-post/
 

Вы можете добавить приведенный выше код, желательно в конец вашего файла .htaccess.

Вот и все. Мы надеемся, что это руководство для начинающих по созданию перенаправлений WordPress помогло вам настроить перенаправления на вашем сайте.

Вы также можете попробовать эти 9 самых полезных уловок .htaccess для WordPress.

Если вам понравилась эта статья, то подпишитесь на наш канал YouTube для видеоуроков по WordPress. Вы также можете найти нас в Twitter и Facebook.

.

Настройка 301 редиректа в cPanel

Иногда вам может понадобиться перенаправить домена 301 трафика с одного домена на другой, и это может быть сделано как на уровне домена, так и для определенных веб-страниц. Например, domain.com и его веб-трафик могут быть перенаправлены на anotherdomain.com ИЛИ domain.com/aboutus.html могут быть перенаправлены на anotherdomain.com/about.html. В этом руководстве мы покажем вам, как создать перенаправление в вашей cPanel, которое автоматически добавляет правило перенаправления в ваш.htaccess файл.

(Вы не являетесь текущим клиентом и хотите тратить меньше времени на работу с cPanel? Щелкните здесь, чтобы узнать больше о хостинге выделенного сервера и преимуществах включения в ваш план времени для системного администратора один на один.)

Перенаправление домена

  1. Войдите в cPanel.
  2. Нажмите кнопку Redirects в разделе Domains .
  3. После этого вы попадете на страницу Добавить перенаправление . Щелкните раскрывающийся список для Тип и выберите перенаправление Permanent (301) или Temporary (302) .
  4. Щелкните следующий раскрывающийся список и выберите домен для перенаправления.
  5. В поле косой черты ‘/’ введите любые имена папок (при необходимости).
  6. Введите адрес, на который вы хотите выполнить перенаправление, в разделе Redirects to .
  7. Выберите, хотите ли вы « перенаправлять только с www. »« Перенаправление с www или без него. »или« Не перенаправлять www. «
  8. »
  9. Установите этот флажок, если хотите создать перенаправление с подстановочными знаками .Это добавит имя файла / папки после URL-адреса при перенаправлении. Например, example.com/test.php перенаправит на example2.com/test.php.
  10. Нажмите Добавить , когда закончите.
  11. Вы закончите, когда увидите зеленое сообщение с подробностями вашего перенаправления.

Поздравляем, теперь вы знаете, как создать редирект в своей cPanel! Вы знали? Вы также можете создать 301 редирект прямо в вашем файле .htaccess.

.

A 301 Redirect Guide для непонятливых!

Если вы хотите удалить или объединить веб-страницы, всегда лучше передать все их достоинства поисковой системы другой существующей странице, чтобы спасти посещения, рейтинг страницы и старые обратные ссылки. Вот что сделает за вас редирект 301!

Здесь вы найдете примеры копирования и вставки, которые можно использовать для любых действий с 301-редиректами Apache, от перенаправления отдельных страниц на целые категории или даже целые веб-сайты.

Что такое перенаправление 301?

301 редирект — это команды, которые направляют поисковые системы и посетителей из старой области веб-сайта в другую область сайта; или они могут полностью указать весь веб-сайт и доменное имя на другой веб-сайт и доменное имя.

Куда вводить 301 редирект?

301 редирект помещается в файл «.htaccess» вашего сайта. .Htaccess — это файл без расширения, который находится в корневом каталоге (/ public_html) и всегда доступен до загрузки вашего веб-сайта с максимальным приоритетом. Это означает, что любые команды в вашем файле .htaccess будут запускаться до того, как ваш сайт появится при посещении поисковой системы или человека. Вы можете редактировать существующий .htaccess, просто используя текстовый редактор, например Блокнот.Иногда кажется, что у веб-сайтов вообще нет файла .htaccess. Все, что вам нужно сделать, это открыть текстовый редактор (например, Блокнот) и сохранить пустую страницу как «.htaccess» с точкой перед ней и без расширения. Поместите это в свой корневой каталог — теперь у вас есть файл .htaccess. Затем вы можете добавить к нему свой 301 оператор.

Какова цель перенаправления 301?

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

ВНИМАНИЕ!

301 редирект — серьезный бизнес. Как только вы измените один из них, поисковые системы могут его сразу же проиндексировать; Итак, вы действительно хотите убедиться, что вы сделали все правильно, прежде чем тестировать его.Я рекомендую вам принять следующие меры предосторожности перед их испытанием:

  • Сделайте резервную копию вашего старого файла .htaccess, прежде чем перезаписывать его новым, содержащим ваши 301 редирект. Я не могу этого не подчеркнуть. Если вы используете существующий файл .htaccess, скорее всего, в нем уже есть много чего. Если вы удалите его и потеряете навсегда, у вас могут возникнуть серьезные проблемы.
  • Проверяйте свои новые переадресации 301 после полуночи или когда ваш сайт малоактивен. Обычно я делаю это около 2:00 утра по восточному стандартному времени в будний день.Обратите внимание, что все текущие посетители либо будут переведены в новые места, продиктованные 301 (если он работает), либо они увидят большую жирную «ошибку 500» (если вы облажались), которая их запутает.
  • Будьте готовы заменить старый рабочий файл .htaccess, если ваша новая версия с перенаправлением 301 не работает и выдает ошибку 500. Вы определенно не хотите, чтобы вас индексировали или посещали с такой ошибкой на уровне всего сайта. Наберитесь терпения и знайте, что в некоторых случаях вам может потребоваться пара дней, чтобы все заработало, особенно если вы перенаправляете сотни страниц и категорий с трудом.
  • Протестируйте свои 301 редиректы в промежуточной учетной записи, если у вас есть для этого средства. Другими словами, создайте фиктивную учетную запись на своем сервере, скопируйте на нее зеркальное изображение своего веб-сайта (блокируя все поисковые системы через robots.txt) и опробуйте свой новый .htaccess на этой фиктивной учетной записи. Вы можете играть сколько угодно, не беспокоясь о проблемах с существующим сайтом.
  • Протестируйте как отдельные перенаправления, так и перенаправления категорий, чтобы убедиться, что все работает правильно, просто посетив старые URL-адреса, чтобы убедиться, что они указывают на правильную область на новом сайте.Хотя вам, вероятно, не нужно тестировать сотни перенаправлений вручную (если вам действительно нужно сделать столько), тем не менее протестируйте добрую дюжину случайных, чтобы убедиться, что все в порядке.

Переадресация 301, рассматриваемая в этом руководстве, предназначена исключительно для переадресации файлов .htaccess и веб-сервера Apache с включенной функцией перезаписи мода (по умолчанию она включена). В каждом примере вы увидите заштрихованную серую линию с командой в ней. Просто скопируйте эту команду и вставьте ее в свой файл htaccess под строкой « RewriteEngine на » (это обязательно).Если «RewriteEngine on» отсутствует в вашем файле htaccess, просто введите его самостоятельно.

Со старой страницы на новую страницу

Вот самый простой сценарий: 301 перенаправление старой страницы на существующую. В этом случае мы перенаправим «www.old-site.com/old.html» на «www.new-site.com/new.html»:

Redirect 301 /old.html http://www.new-site.com/new.html

Первый URL-адрес — это тот, на который направляется, а второй URL — это тот, на который он перенаправляется.Вы заметили, что первая часть требует только ввести страницу, а вторая ссылка содержит полный URL? Это правильный синтаксис, и он должен быть набран таким образом.

Старая страница без расширения на новую страницу без расширения

Это также работает для перенаправления страниц, у которых нет расширений, таких как типы страниц, типичные для системы управления контентом, такой как Joomla или WordPress. Используя приведенный выше пример, предположим, что нам нужно 301-перенаправление страниц, у которых нет «.html «расширение:

Redirect 301 / старый http://www.new-site.com/new

Обратите внимание, что в этом перенаправлении после имени страницы нет символа «/» … мы узнаем почему, позже!

Только старая домашняя страница только новая домашняя страница

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

RedirectMatch ^ / $ http: // www.(. *) $ http://www.new-site.com/$1 [R = 301, L]

Таким образом, вы устраняете проблемы поисковой системы, возникающие из-за наличия «двух версий» веб-сайта, которые также портят результаты аналитики. Выше код сообщает серверу, что домен является «[NC]» для «без учета регистра», так что любой вариант вашего домена все равно будет транслироваться с перенаправлением. «$ 1» после домена означает, что любая страница или категория, добавленная после него, с префиксом www или без него, будет перенаправлять правильно.

Переименовать существующую категорию

Допустим, вы пожалели о названии папки (или категории) на своем веб-сайте и захотели изменить его. Например, вам не нравится «new-site.com/newcars/», и вы хотели бы назвать его «new-site.com/cars/», потому что он короче и проще. Однако вы хотите, чтобы все страницы в этой папке по-прежнему работали, чтобы они также адаптировались к новой папке «/ cars /». Вот что вы бы использовали:

редирект 301 / newcars ​​/ http: //www.new-site.ru / cars /

Переименовать существующую категорию в более глубокую категорию

Вы также можете выполнить это перенаправление для папок более глубокого уровня. Итак, предположим, вы хотите, чтобы папка «new-site.com/cars/classic/» переместилась в «/ cars / all / classic /». Вы бы использовали это:

редирект 301 / cars / classic / http://www.new-site.com/cars/all/classic/

В отличие от предыдущих примеров в этом руководстве, которые включали перенаправление с одной страницы на другую, обратите внимание, что вам придется оставить «/» после имен папок при перенаправлении из папки в папку.Это потому, что косая черта в конце обозначает «папку».

Например, это страница: «new-site.com/test», а это папка: «new-site.com/test/»

Перенести категорию на единую веб-страницу

В отличие от предыдущего урока, предположим, что у меня есть папка на моем сайте: «new-site.com/cars/», и я избавляюсь от всей этой папки и всех страниц в ней, например «/ cars / ford.html, «» /cars/toyota.html, «» /cars/acura.html «и несколько десятков других./cars/(.*)$ http://www.new-site.com/new-page.html

Иногда веб-сайт по какой-либо причине необходимо переместить на новое доменное имя. К счастью, это очень просто! Просто скопируйте и вставьте приведенный ниже код (и ничего больше) и сделайте его единственным содержимым вашего файла htaccess:

Опции + FollowSymLinks

RewriteEngine на

RewriteRule (. *) Http://www.new-site.com/$1 [R = 301, L]

Следует отметить два важных момента.Во-первых, это своего рода «ленивый» способ перемещения веб-сайта. Вы не перемещаете отдельные папки или страницы в их новые копии на новом веб-сайте; вместо этого вы просто перемещаете все на главную страницу нового сайта. Альтернативный вариант — написать команду перенаправления 301 для каждой отдельной папки или страницы, если вам действительно нужно сохранить рейтинг каждой страницы в поисковой системе.

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

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

Пример.htaccess: старый сайт / домен на новый сайт / домен (легко, но небрежно)

Опции + FollowSymlinks

RewriteEngine на

RewriteRule (. *) Http://www.new-site.com/$1 [R = 301, L]

Вверху: это файл .htaccess для старого сайта. Это способ ленивого перенаправления со старого сайта на новый, и он не рекомендуется, если только ваш старый сайт действительно крошечный, не получает посетителей и не имеет реального рейтинга ключевых слов в поисковых системах. Мы просто накапливаем весь старый сайт и выкладываем его на главную страницу нового сайта, которая называется «www./ $ «. Следующие 5 строк перемещаются по отдельным страницам со старого сайта на страницу нового сайта под названием» новая-страница «. Очевидно, эти старые страницы (old-page-1, old-page-2, и т. д.) рассматриваются как устаревшие, и мы просто говорим поисковым системам указывать любые ссылки на них на «/ new-page». Наконец, две строки «RedirectMatch» перемещаются по двум целым категориям и всем их страницам. перейти на новую страницу нового сайта под названием «синий».

«Ошибка 500»

Если вы получаете сообщение «Ошибка 500» после тестирования вашего сайта, не забудьте заменить старый.или $ или /, все не сработает! Найдите, где вы допустили эту ошибку, исправьте ее и повторите попытку.

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

.

Об авторе

alexxlab administrator

Оставить ответ