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

Redirect 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 редирект

Редактируется данный файл с помощью текстового редактора, лучше использовать 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 редирект в WordPress
  3. Там уже, как и в случае с файлом htaccess, нужно прописать старый URL (без домена) и новый с доменом:
    301 редирект htaccess
  4. Также можно прописать редирект всех страниц в категории. То есть, допустим, было у нас /7-1-products/ и мы хотим сделать /products/, то просто сначала там же на странице плагина ставим галочку перед "Use Wildcards?":
    Как сделать 301 редирект
  5. И уже потом можно прописать подобное, используя "звездочку":
    301 редирект: как настроить
  6. В итоге, все статьи, которые находились в начальной рубрике будут переадресовываться на новый вид категорий.
к оглавлению ↑

Вывод

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

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

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

С уважением, Пётр Александров.
Подпишитесь на бесплатные уроки

Понравился урок? Вы не хотите пропускать новые бесплатные уроки по созданию, раскрутке и монетизации блога? Тогда подпишитесь на RSS или на электронный ящик в форме выше и получайте новые уроки мгновенно! Также можете следить за мной в Twitter.

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

25 комментариев

по хронологии
по рейтингу сначала новые по хронологии
Андрей Хвостов http://ingenerhvostov.ru

Про разницу сайта с WWW и без WWW узнал когда Пётр Александров проводил аудит моего блога ingenerhvostov.ru. Даже при том, что у меня были знания неплохие по SEO, по правильному написанию SEO текста, по оптимизации контента, Пётр нашёл и исправил много недочётов. Помнится одних плагинов у меня было около 40, а это явный перебор. Насмотрелся уроков Евгения Попова и ставил все плагины, которые и не нужны мне были. Спасибо моему бизнес-тренеру Владу Челпаченко, который подсказал в качестве SEO специалиста Петра.

Автор
Пётр Александров http://wpnew.ru

Спасибо, Андрей, за отзыв.

Денис Mаркевич

Вес, например, каждой из с 5 страниц при 301 редиректе на одну страницу суммируется или присваивается максимальный одной из 5?

Виталий Охрименко http://fitkiss.club

Хороший вопрос, жаль что Петя не ответил на него. Тоже интересно было бы узнать

seoonly.ru http://seoonly.ru/

Спасибо-)

1. файл ".htaccess" может находиться где угодно, но интерпретироваться будет только веб-сервером apache 🙂 Если у вас другой (nginx, lighttpd ...), то он вам не поможет. На WordPress файл никак не влияет.

2. Вроде бы, автор перепутал заголовок и код RewriteCond, RewriteRule!

"301 редирект с www на без www:" НЕ соответствует "RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]"

Цитата с сайта http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html: "You can prefix the pattern string with a '!' character (exclamation mark) to negate the result of the condition."

Т.е. '!' означает - начинающийся НЕ с www.

3. В редиректе с index.php в RewriteCond вместо THE_REQUEST легче использовать REQUEST_URI (хотя бы писать меньше)

Андрей http://Pozitivu-DA.ru

Пётр, а тебя не смущает, что у тебя на сайте перед Категорией можно вписать любой префикс, и такой адрес откроется, например:

http://wpnew.ru/raskrutka-bloga/topics/seo_optimizaciya

http://wpnew.ru/raskrutka-bloga/blablabla/seo_optimizaciya

Мне это не понравилось у себя, так как в Яндексе категории были ещё с перфиксом "topics", попробовал сделать с них редирект, вставив в блок такую строку:

RedirectMatch 301 ^/topics/(.*) /$1

Редирект topics получился! Но... но простые страницы перестали открываться, самые банальные, типа "О сайте", "Об авторе", где сразу после URL сайта страница.html.

Вернул прежний .htaccess - не помогло! Видимо, добавилось в базу, так как в блоке есть "RewriteEngine On

RewriteBase /"

Как теперь из базы эту строчку вычистить, что я добавил? Ай нид хелп!

Автор
Пётр Александров http://wpnew.ru

Это не смущает, не нужно париться, так как есть Canonical (приложил скриншот).

По поводу htaccess: попробуй глянуть через настройки WP SEO by Yoast.

decom_333_5570561c83fdf.pngdecom_333_5570561c83fdf.png
Виталий Охрименко http://fitkiss.club

Петь, а rel=canonical и просто canonikal это одно и тоже, или мы о разных вещах говорим?

Андрей http://Pozitivu-DA.ru

Спасибо! Разобрался уже с поддержкой хостинга.
Смотрю, интересные фишки появились в комментах у тебя! Какой плагин? )) Правда, сами комменты растянулись от межстрочных переносов, или так и задумано?

Автор
Пётр Александров http://wpnew.ru

Вот тут писал http://wpnew.ru/sozdanie-bloga/razdel-4-plaginy/decomments.html

По поводу растягивания интервалов, решится скоро. 🙂

Виталий Охрименко http://fitkiss.club

Как я понял уже решилось, никаких лишних интервалов не вижу

Виталий

Здравствуйте

у нас есть 2 сайта двух компаний с похожими страницами - обе внутренние страницы отображаются по одному ключевому слову в поиске - но один сайт на первой странице яндекса а второй сайт на четвертой - а нужно чтобы было наоборот тот сайт что находится на четвертой страницы был на первой - есть ли смысл ставить редирект того что на первой находится на тот что на четвертой - и не зааффилируются ли сайты от этого?

Владимир Сальников http://vladimir83salnikov.com

Ага ещё одна статья-шпаргалка от Петра пригодилась...

IvYur http://kuponam.ru

Главное реализовать ее в своих проектах, а не прочитать и забыть ))

Виталий Охрименко http://fitkiss.club

Петь, кинь в меня камнем если я ошибаюсь: но ведь редирект с www на без www и наоборот в вордпрессе делается непосредственно в админке!?

Андрей Белый http://www.kosmetologicheskoe-oborydovanie.ru

классная шпаргалка по 301-му) отдельное спасибо, за инфу по плагину Simple 301 Redirects

Ольга

Спасибо за статью Петр, мне, как новичку, больше подошел плагин), все получилось! Так уж получилось, что понадобился 301 редирект, страницы прошли индексацию, а потом обнаружилась ошибка в одной букве в урле, пришлось исправить.
Уже не первый раз читаю твои статьи и нахожу много ответов.

Андрей http://flino.ru

как всегда все понятно описано, спасибо

А вы не перепутали местами?:

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]

Михаил http://turbodeti.ru

Петр, а не подскажите по поводу index.php
у меня основная ссылка переадресует на главное зеркало, а в категориях если дописывать index.php то выдае ошибку что страницы не найдено,
надо ли делать редирект с категорий, какой код использовать?

Автор
Пётр Александров http://wpnew.ru

Необязательно тут заморачиваться, главное, чтобы с главной был редирект

Михаил http://turbodeti.ru

Петр приветствую, делаю сайт на опен карт, у меня модуль по умолчанию, практически на весь товар ставить редирект 302, (где слешь не нужен убирает, где нужен добавляет. подскажите , так и оставить, или что то делать с этим?

Алексей http://skoromamoy.ru/

Петя приветствую! Подскажи. Пытаюсь сделать редирект с http на https. Вставляю твой код и сайт перестает работать. Что можно еще посмотреть?

Автор
Пётр Александров http://wpnew.ru

Попробовать другими способами сделать редирект, попробовать обратиться к хостингу и т.д.

Наверх Рейтинг@Mail.ru