Опубликовано: 29 августа 2014
Обновлено: 25 июня 2020
678 011
Три важных совета и семнадцать конкретных примеров установки 301 переадресации страниц через htaccess!
Располагайте переадресации страниц в файле от частных к более глобальным (сверху вниз). Например: простая переадресация двух страниц стоит выше, чем глобальное правило редиректов с www на без www.
Избегайте последовательных редиректов (двух, трех и т.д.). Правила должны быть настроены так, что при возникновении редиректа он должен перенаправлять пользователя (робота) только один (!) раз. Каждое лишнее переадресация – это секунды драгоценного времени отдачи страницы, это нагрузка на сервер, это нечеткие команды для поисковых роботов.
Не забывайте, что многие браузеры кешируют (запоминают редиректы), поэтому проверять переадресации лучше на сайте – http://www.bertal.ru.
В файле обязательно должна присутствовать команда:
RewriteEngine On
Самый простой вариант
Redirect 301 /test-1/ http://site.ru/test-2/
Более подробный
RewriteCond %{REQUEST_URI} ^/test/$ RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
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} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L]
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]
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]
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]
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]
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]
RewriteCond %{REQUEST_URI} /index.php RewriteCond %{QUERY_STRING} ^\z RewriteRule ^(.*)$ http://site.ru/? [R=301,L]
Пример: типа site.ru/index.php?n=1 на site.ru/?n=1
RewriteCond %{REQUEST_URI} /index.php RewriteRule ^(.*)$ http://site.ru/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ RewriteRule ^(.*)index\.(php|html|htm)$ http://site.ru/$1 [R=301,L]
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]
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/ [L,R=301]
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]
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]
Обратный редирект, если перестали использовать SSL сертификат.
RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
Редирект 301 или 301 Permanent Redirect — это правило, которое автоматически переадресовывает пользователя на другой адрес страницы. С его помощью вы можете склеить старые страницы с новыми или перенести сайт на другой домен, убрать многие дубли с сайта и многое другое. Крайне полезная вещь — поэтому нужно научиться делать его правильно!
Так же при 301 редиректе происходит склейка тИЦ (читаем что такое тиц) и PR — т.е. вы можете сохранить старое значение на новом адресе. Вы можете нисколько не потерять в глазах поисковых систем. Давайте перейдем от теории к практике.
Файл под названием .htaccess находится в главной категории вашего сайта. Это служебный файл, в котором мы будем указывать правила склейки. Открываем файл блокнотом (рекомендую notepad++, чтобы не было проблем с кодировкой). Не забывайте, что это один из важных пунктов в работе SEO специалиста.
Общий шаблон для .htaccess, которым мы будем пользоваться:
Options +FollowSymLinks RewriteEngine On #Здесь указываем правила
Все правила записываются в виде:
RewriteCond [Сравнение] [Условие] [Флаги] RewriteCond [Сравнение] [Условие] [Флаги] RewriteRule [Шаблон] [Подстановка] [Флаги]
Теперь непосредственно займемся переадресацией и разберем конкретные примеры.
Я уже писал статью про склейку зеркал сайта, но на всякий случай здесь обобщу, чтобы вам было удобнее пользоваться страницей.
Чтобы настроить его вам нужно прописать в вашем файле следующий код, который будет перенаправлять посетителей с адреса 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 прописываем:
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Это действие противоположное предыдущему, только основное зеркало здесь www.site.ru:
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
Это еще один вид дублей, тут мы склеим страницы 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 — это новая страница и она может быть на любом домене (включая ваш текущий домен).
Страницы с параметрами редиректятся сложнее, возьмем пример 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
Этот пункт я выделил отдельно, т.к. он больше связан с переносом на другой домен. Тут есть важный момент, это не упустить директиву по правке роботса — она указана на 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 Permanent Redirect / 301 редирект…
… это переадресация пользователя на другой адрес страницы или домена. Этот код ответа сервера означает, что страница и ресурс переехали навсегда и теперь доступны в другому адресу.
Есть мифы, связанные с редиректами: например, что при редиректе не передаётся PR страницы, но этот миф был развенчан одним из вебмастеров Google Джоном Мюллером в своем блоге. Или что вместо 301 Moved Permanently редиректа можно использовать 302 Temporary Redirect.
Существует целый класс 3хх редиректов. Наиболее часто используются коды 301 и 302 — они как двойняшки, которые вроде бы и похожи, но всё-таки различаются. А для поискового робота это два совершенно разных человека, и трактуются такие ответы сервера по-разному:
Как эти коды отразятся на выдаче:
Из-за подобных ошибок вебмастеров и злоупотребления 302 редиректом в неэтичных целях SEO-специалисты очень не советуют использовать его на своём сайте, ведь даже за небольшое подозрение в черном SEO вы можете схлопотать серьезный штраф. Давайте лучше разберемся как можно настроить легальный 301 редирект в .htaccess
Файл .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.
RewriteEngine on | off
Положение on-off включает и выключает работу модуля.
2. RewriteCond — определяет условие какого-либо правила, при котором происходит преобразование. Сразу после директивы чаще всего идут переменные %{HTTP_HOST} и %{REQUEST_URI}, которые означают адрес сервера (например, example.ru) и ресурс, запрошенный в строке HTTP-запроса, соответственно.
3. RewriteRule — идёт после одного или нескольких RewriteCond. Это правило преобразования URI, которое применяется только при условии выполнения RewriteCond.
Синтаксис директивы RewriteRule выглядит следующим образом:
RewriteRule Шаблон Подстановка [flag]
Здесь стоит дать пояснение к используемым символам регулярного выражения, которое задает шаблоны строк:
Метасимволы используются для задания групп символов и меток в шаблоне:
Флаги определяют дополнительные опции для данного правила и перечисляются в квадратных скобках через запятую:
Теперь, зная эти правила, мы можем попытаться самостоятельно сделать редирект с помощью htaccess.
Redirect 301 /old-post.html http://new-site.ru/new-post.html
RewriteEngine on RewriteCond %{HTTP_HOST} !^site.ru$ [NC] RewriteRule ^(.*)$ site.ru/$1 [R=301,L]
RewriteEngine on RewriteCond %{HTTP_HOST} !^www.site.ru$ [NC] RewriteRule ^(.*)$ www.site.ru/$1 [R=301,L]
где site.ru — ваше доменное имя.
RewriteEngine on RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ RewriteRule ^(.*)index\.(php|html|htm)$ $1 [R=301,L]
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L]
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/ [L,R=301]
RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
Если вы заметили, что к адресу основной страницы приклеивается что-то вроде &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/
Помните, что с великой силой редиректа приходит и великая ответственность, так что используйте полученный знания с умом.
В заключении хотелось бы по пунктам огласить условиях при которых стоит и не стоит использовать .htaccess переадресацию.
Всем привет! Сегодня на SEO-Mayak.com довольна сложная и интересная тема. Многие, почти все начинающие блогеры даже понятия не имеют, что такое 301 редирект. Я как-то уже касался этой темы в статье про дубли контента и теперь мы рассмотрим ее поподробней.
Что такое 301 редирект? Это специальный код, который возвращает сервер при обращении к определенному URL.
Что это значит? Это значит, что если вы набрали в адресной строке браузера определенный URL, то Вас перенаправят на новый адрес.
Для чего это все нужно? Возьмем пример из реальной жизни. Заходите вы по определенному адресу, а вам говорят — «А здесь теперь такие не живут! Они совсем своим имуществом переехали на другую улицу и вот Вам их новый адрес…» Согласитесь полезная информация? Я не зря сказал — «…со все своим имуществом» т.е они не чего не оставили на старом адресе. Это важно!
Если Ваш проект по какой-то причине переехал на новый адрес, то как раз 301 редирект подскажет поисковому роботу где Вас искать, причем Ваш сайт не потеряет вес и другие показатели при переезде.
Чтобы выполнить сие действие надо в файле .htaccess прописать следующее:
Где «/» означает, что все начиная с «головы» сайта включая все подкаталоги будет переадресовано на новый адрес.
Не забудьте сделать резервную копию сайта если вдруг что-то пойдет не так!
Теперь рассмотрим другую ситуацию. У меня есть 2 квартиры, а живу я лишь в одной. Ко мне приходят письма по другому адресу, звонит телефон, заходят разные люди и т.д. А я забыл повесить объявления, что нахожусь я вообще в другом месте. Забавная история! Получается я теряю собственные авторитет в глазах окружающих из-за своей забывчивости.
Из этого вывод. Надо непременно указать поисковому роботу точный адрес проекта, например: www.сайт.com или просто сайт.com потому, что это два разных адреса.
Как это осуществить смотрите на этом примере:
Перенаправление с www на без www
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.сайт\.com$ [NC]
RewriteRule ^(.*)$ http://сайт.com/$1 [R=301,L]
Перенаправление с без www на с www
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^сайт\.com$ [NC]
RewriteRule ^(.*)$ http://www.сайт.com/$1 [R=301,L]
Надо заметить, что если в файле .htaccess уже прописана строчка RewriteEngine On, то ее повторять уже не надо и не забудьте вписать свой домен.
Существует мнение, что с защищенного протокола https:// также надо перенапралять пользователей на основной протокол http:// Я даже обратился в службу поддержки своего хостинг провайдера с этим вопросом. На что мне ответили, что возможность перенаправления есть и для этого в файле .htaccess необходимо прописать следующее:
Бывает такие случаи, что необходимо перенести только одну страницу при этом сохранить ее вес. Для этого в файле .htaccess прописываем:
В этой статье я постарался описать самые распространенные случаи использования 301 редиректа, которые необходимо знать каждому веб-мастеру. На самом деле возможности 301 редиректа на этом не ограничиваются и в будущем я еще не раз буду возвращаться к этой теме, так что советую подписаться на обновления блога.
До встречи!
С уважением, Виталий Кириллов
Редирект (перенаправление или форвардинг) —позволяет автоматически переадресовать пользователя, посетившего страницу А на страницу Б. Например, пользователь, пытающийся открыть страницу site.ru/page1/ будет попадать на site.ru/page2.
Для того, чтобы перенаправить пользователя с одной страницы на другую требуется использовать следующую комбинацию:
Redirect 301 site.ru/page1/ site.ru/page2/
Где:
Важно! Можно записывать адреса в относительном виде, например, /page1/ и /page2/.
Также допускается использование конструкции:
Redirect permanent site.ru/page1/ site.ru/page2/
Для того, чтобы выполнить правило, потребуется посетить административную панель хостинга (или же зайти через FTP), где в корневой папке сайта лежит файл htaccess.
Вводим нужное нам правило.
Для этого можно использовать инструмент проверки ответа сервера Яндекса:
https://webmaster.yandex.ru/tools/server-response/
Здесь вводим адрес первой страницы и видим следующее:
Как видим правило применилось и работает корректно.
В этом случае необходимо автоматически перекидывать всех пользователей с домена domain1.ru на domain2.ru при помощи функции:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.ru$
RewriteRule ^(.*)$ http://www.domain2/$1 [R=301,L]
При переезде сайта с 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]
В функции ниже осуществляется переход из 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>
<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>
При необходимости сделать обратную интеграцию и перейти на незащищенную версию протокола можно воспользоваться:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} 1 [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
В этой ситуации подойдет:
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]
Для этой цели можно воспользоваться:
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 редирект и как его настроить. Но, как вы знаете, мой блог – это моя шпаргалка. Поэтому, я считаю, что не будет лишним написать этот пост и, когда потребуется, можно будет обращаться за данной информацией как мне, так и вам. Потому что все эти коды невозможно держать в голове, да и не нужно.
301 редирект – это некое автоматическое перенаправление с одной страницы на другую, причем при этом редиректе передается все: вес страницы, тИЦ, PR, вес входящей ссылочной массы и прочее. То есть происходит склеивание старой страницы с новой. Пользователь, попавший на старую страницу, автоматически “перебросится” на новую.
Где может пригодится 301 редирект:
Я предпочитаю делать 301 редирект с помощью файла htaccess. При чем он существует не только на WordPress сайтах, поэтому данный метод перенаправления – универсальный. Файл .htaccess лежит в корне сайта:
Редактируется данный файл с помощью текстового редактора, лучше использовать Notepad++.
Внимание! Касается новичков: если вы не совсем уверены в своих действиях, обязательно, перед тем как делать изменения в файле htaccess, сделайте его резервную копию.
Сайт должен быть доступным только по одному варианту: либо с 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]
При необходимости простановки 301 редиректа с одной страницы на другую, нужно прописать вот этот код в файле htaccess:
Redirect 301 /staraya-stranica.html http://site.ru/novaya-stranica.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]
Если вам нужно прописать 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 новый адрес сайта.
Если сайт клиента на WordPress и он сам хочет в некоторых местах прописать 301 редиректы, я ставлю плагин Simple 301 Redirects. Да и для новичков он хорошо подойдет. Плагин очень прост в использовании и все делается в привычной админке WordPress, поэтому данный способ может показаться кому-то более легким.
После того, как пропишете 301 редирект, обязательно проверьте сайт на работоспособность. Одна маленькая ошибка может сделать весь ваш сайт недоступным. Обязательно перед изменениями файла htaccess делайте его резервные копии, ну либо пользуйтесь CTRL+Z, чтобы вернуть файл в исходное положение.
Еще: учтите, что вес по 301 редиректу передается не сразу. Да, в Google склейка происходит быстрее, но в Яндексе это все происходит медленно. Нужно ждать обычно от 1 до 3-х месяцев.
Не забудьте добавить данную страницу в закладки, пригодится. Ну и конечно же спасибо за ретвиты.
Популярные примеры правильной настройки 301 редиректа в файле .htaccess. Советы по добавлению редиректов.
Приведенные примеры работают для серверов функционирующих на APACHE, для NGINX настройки в файле .htaccess работать не будут. В примерах используется %{QUERY} — так обозначается часть URL, которая следует после знака вопроса. Правила для редиректа срабатывают только при условии соответствия правилу указанному в редиректе.
При настройке правила редиректов в файле .htaccess все правила необходимо указывать после указанных двух строк, либо просто добавьте их:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite\.ru$ [NC]
RewriteRule ^(.*)$ http://www.mysite.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.mysite\.ru$ [NC]
RewriteRule ^(.*)$ http://mysite.ru/$1 [R=301,L]
Redirect 301 /oldpage.html http://mysite.ru/newpage.html
RewriteRule ^papka /papka-new/$1 [R=301,L]
Для наглядности примера допустим адрес страницы имеет вид 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]
Например адрес страницы имеет вид — 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]
Правила и логика работы с доменами на кириллице абсолютно такие же, единственным отличием является замена символов кириллицы на специальный код.
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]
RedirectMatch 301 (.*)\.html$ http://newsite.ru$1.php
DirectoryIndex index.php index.html index.htm index.shtml
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]
Необходимое правило для решения проблемы с дублями страниц в поисковых системах.
RewriteCond %{HTTPS} "on" RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
Данное правило позволяет не пускать на сайт спамный трафик с других сайтов:
RewriteCond %{HTTP_REFERER} ref-spam-site.ru [NC,OR]
RewriteCond %{HTTP_REFERER} another-ref-spam.ru [NC]
RewriteRule .* - [F]
Для поисковых систем очень важно получать код ответа 404 для несуществующих страниц
ErrorDocument 404 /404-for-me.php
Следует помнить, что все правила выполняются в .htaccess в порядке следования их в файле, поэтому необходимо следить за очередностью правил.
Избегайте цепочек редиректов, когда от старой до новой страницы осуществляется посещение еще одной страницы. Цепочки переадресаций негативно влияют на доверие пользователей и поисковых систем.
Например редирект на мобильную версию для планшетов и смартфонов:
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]
Общий
VPS
Выделенный
WP Enthusiast
WP Professional
WP Professional Plus
Редирект 301 — это способ навсегда перенаправить трафик со старого URL-адреса на новый. Если компания переходит на новый веб-сайт, может быть трудно достучаться до всех клиентов об изменении (и еще сложнее заставить их запомнить).
Редирект 301 решает проблему, перенаправляя весь трафик со старого URL-адреса на новый. Таким образом, клиенты, которые случайно перейдут на старый сайт, автоматически перейдут на новый, даже если URL-адреса отличаются.
Вы можете добавить 301 редирект для отдельных страниц или целых доменов. Все, что вам нужно сделать, это добавить строку в ваш файл .htaccess. Это легко сделать в ACC. Просто выполните следующие действия:
Если у вас есть учетная запись хостинга WP Professional или WP Enthusiast , 301 редирект будет настроен по-другому.Перейдите в раздел WP Hosting 301 Redirects, чтобы узнать, как мы рекомендуем его настроить.
Общий
VPS
Выделенный
Оставьте имя файла как есть. Для работы он должен оставаться .htaccess .
WP Enthusiast
WP Professional
WP Professional Plus
Чтобы настроить перенаправление, вам нужно добавить несколько строк в файл.htaccess файл. См. Примеры строк ниже и добавьте строки, которые лучше всего подходят для вашей ситуации.
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-адресом, на который должна быть перенаправлена страница.
Redirect 301 / http://www.new-domain.com/
Замените http://www.new-domain.com/ URL-адресом, на который вы хотите перенаправить свой сайт.
Обязательно добавьте пустую строку в конец вашего документа .htaccess. Это сигнализирует серверу, что он достиг конца файла .htaccess.
После завершения нажмите Создать файл для новых файлов или Сохранить изменения , если у вас уже был .htaccess.
Создайте перенаправления, добавив на свой сайт плагин Simple 301 Redirect . Выполните следующие действия:
Если вам нужно больше отформатировать имя файла и URL-адрес для перенаправления, щелкните ссылку Documentation внизу страницы.
Для более опытных пользователей WordPress заголовок PHP может быть отредактирован для создания перенаправления. Ознакомьтесь с документацией WordPress по функции wp_redirect , чтобы узнать, как это работает.
.Вы пытаетесь создать редирект в WordPress? Не знаете, что такое редирект и почему это важно? Не волнуйтесь, в этом руководстве для начинающих по редиректам WordPress мы расскажем, что такое перенаправление, как создать перенаправление в WordPress, зачем оно вам нужно и когда следует использовать перенаправления.
Готовы? Давайте начнем.
Редирект — это способ для вашего веб-сайта отправить быстрое сообщение в браузер вашего читателя и сообщить им, что страница, которую они хотят посетить, была перемещена, чтобы их браузер мог автоматически указать им на новую страницу по вашему выбору.
Существуют различные типы перенаправления, такие как перенаправление 301, перенаправление 302, перенаправление 307 и т. Д.
Однако, чтобы эта статья оставалась простой и полезной, мы рассмотрим только 301 редирект, поскольку он является наиболее важным.
Давайте посмотрим, почему это важно, на примере сценария использования.
Основная причина использования переадресации 301 — это когда ваш сайт или страница на нем были перемещены, и вместо этого вы хотите направить пользователя на новую страницу.
Идея этой статьи пришла к нам, когда один из наших читателей спросил нас, как перенаправить пользователей со старого сообщения на новое.
— Вам необходимо создать перенаправление, когда вы планируете удалить сообщение или страницу в пользу нового контента.
— Вам необходимо создать перенаправление, когда вы планируете изменить постоянные ссылки вашего сообщения или страницы.
Почему? Поскольку отсутствие перенаправления приведет к тому, что ваши пользователи увидят ошибку 404 not found. Это не только плохо для пользователей, но также может повлиять на SEO вашего сайта и снизить рейтинг в поисковых системах.
Вот когда переадресация 301 становится очень важной.
Он позволяет сообщать поисковым системам и браузеру пользователя, что страница, на которую они пытаются перейти, была навсегда перемещена в новое место.
Это позволяет перенести весь трафик вашей старой страницы и сильные стороны обратных ссылок (SEO) на новую страницу.
Теперь, когда мы рассмотрели, почему и когда перенаправления, давайте посмотрим, как вы можете создать 301 редирект в WordPress, используя различные доступные методы.
Подписаться на WPBeginner
Если вам не нравится видео или вам нужны дополнительные инструкции, продолжайте читать.
Более простой подход к созданию и управлению переадресацией 301 — использование одного из многих плагинов переадресации WordPress. Это позволяет настраивать перенаправления, даже не написав ни одной строчки кода.
Самый простой способ добавлять перенаправления и управлять ими в WordPress — использовать плагин Redirection. Установите и активируйте плагин. После активации зайдите в Инструменты »Перенаправление , чтобы настроить перенаправления.
Плагин
Redirection не только позволяет настраивать перенаправления, но также помогает обнаруживать ошибки 404 на вашем сайте WordPress. Затем вы можете перенаправить эти URL-адреса в соответствующий пункт назначения. Посмотрите это руководство о том, как отслеживать 404 страницы и перенаправлять их в WordPress.
Иногда вы можете захотеть сохранить сообщение / страницу, но перенаправить его на другое сообщение или страницу. Вот здесь и пригодятся ссылки на страницы. Этот простой плагин добавляет мета-поле на экран редактирования вашего сообщения, где вы можете ввести адрес нового места, куда вы хотите отправить своих пользователей.
Еще один простой в использовании плагин — Simple 301 Redirects. Как следует из названия, он упрощает переадресацию 301. Просто установите и активируйте плагин, а затем перейдите на страницу Settings »301 Redirects , чтобы добавить свои URL-адреса.
Теперь настроить 301 редирект с помощью плагина WordPress очень просто, но есть небольшой спад производительности. В зависимости от вашего хостинг-провайдера WordPress ваша переадресация 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 трафика с одного домена на другой, и это может быть сделано как на уровне домена, так и для определенных веб-страниц. Например, domain.com и его веб-трафик могут быть перенаправлены на anotherdomain.com ИЛИ domain.com/aboutus.html могут быть перенаправлены на anotherdomain.com/about.html. В этом руководстве мы покажем вам, как создать перенаправление в вашей cPanel, которое автоматически добавляет правило перенаправления в ваш.htaccess файл.
(Вы не являетесь текущим клиентом и хотите тратить меньше времени на работу с cPanel? Щелкните здесь, чтобы узнать больше о хостинге выделенного сервера и преимуществах включения в ваш план времени для системного администратора один на один.)
Вы закончите, когда увидите зеленое сообщение с подробностями вашего перенаправления.
Поздравляем, теперь вы знаете, как создать редирект в своей cPanel! Вы знали? Вы также можете создать 301 редирект прямо в вашем файле .htaccess.
.Если вы хотите удалить или объединить веб-страницы, всегда лучше передать все их достоинства поисковой системы другой существующей странице, чтобы спасти посещения, рейтинг страницы и старые обратные ссылки. Вот что сделает за вас редирект 301!
Здесь вы найдете примеры копирования и вставки, которые можно использовать для любых действий с 301-редиректами Apache, от перенаправления отдельных страниц на целые категории или даже целые веб-сайты.
301 редирект — это команды, которые направляют поисковые системы и посетителей из старой области веб-сайта в другую область сайта; или они могут полностью указать весь веб-сайт и доменное имя на другой веб-сайт и доменное имя.
Куда вводить 301 редирект?
301 редирект помещается в файл «.htaccess» вашего сайта. .Htaccess — это файл без расширения, который находится в корневом каталоге (/ public_html) и всегда доступен до загрузки вашего веб-сайта с максимальным приоритетом. Это означает, что любые команды в вашем файле .htaccess будут запускаться до того, как ваш сайт появится при посещении поисковой системы или человека. Вы можете редактировать существующий .htaccess, просто используя текстовый редактор, например Блокнот.Иногда кажется, что у веб-сайтов вообще нет файла .htaccess. Все, что вам нужно сделать, это открыть текстовый редактор (например, Блокнот) и сохранить пустую страницу как «.htaccess» с точкой перед ней и без расширения. Поместите это в свой корневой каталог — теперь у вас есть файл .htaccess. Затем вы можете добавить к нему свой 301 оператор.
Какова цель перенаправления 301?
Редирект 301 — это единственный способ как можно быстрее сообщить поисковым системам о перемещении контента; либо в другом месте на сайте, либо на совершенно другое доменное имя.Это поможет разделам вашего старого веб-сайта или старому веб-сайту «обновиться» на страницах результатов поиска, чтобы отобразить их новое местоположение. Время, необходимое для срабатывания перенаправления 301, является мгновенным, но время, необходимое для обновления записей в результатах поиска, полностью определяется поисковой системой. Обычно это происходит быстрее для сайтов, которые часто индексируются.
ВНИМАНИЕ!
301 редирект — серьезный бизнес. Как только вы измените один из них, поисковые системы могут его сразу же проиндексировать; Итак, вы действительно хотите убедиться, что вы сделали все правильно, прежде чем тестировать его.Я рекомендую вам принять следующие меры предосторожности перед их испытанием:
Переадресация 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» после тестирования вашего сайта, не забудьте заменить старый.или $ или /, все не сработает! Найдите, где вы допустили эту ошибку, исправьте ее и повторите попытку.
Если вы не можете решить проблему, начните удалять строки одну за другой и повторно тестируйте файл. Обычно это тот случай, когда ваши перенаправления «с одной страницы на одну страницу» работают нормально, но у вас есть синтаксическая ошибка в одном из перенаправлений «из категории в одну страницу». Итак, удалите все категории «на одну страницу» и повторите попытку файла .htaccess еще раз.
.
Об авторе