.htaccess — Как правильно сделать редирект с www на без www

Проблема

Поисковые системы считают сайты http://yoursite.ru/ и http://www.yoursite.ru/ абсолютно разными. Отсюда следует, что если часть сайтов будет ссылаться на http://yoursite.ru/, а другая часть на http://www.yoursite.ru/, то ссылочная популярность Вашего сайта делится между разными доменами, что не есть хорошо. С этим надо что-то делать.

Решение проблемы

Используя 301 редирект, который автоматически будет переадресовывать всех, кто заходит по ссылке, начинающейся с http://yoursite.ru/ на http://www.yoursite.ru/, Вы сможете дать поисковым системам понять, что эти 2 домена являются как бы одним.Таким образом, ссылочная популярность больше не будет распределяться между двумя доменами, а будет считаться общей, что позволит улучшить позиции сайта в поисковых системах.

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

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

    Если же у Вас есть доступ к файлу httpd.conf, то Вы сможете активировать данный модуль собственноручно. Для этого откройте данный файл для редактирования (не забудьте сперва сделать его резервную копию) и раскомментируйте следующую строку:

    LoadModule rewrite_module modules/mod_rewrite.so
    

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

  2. Скачайте на свой компьютер с сервера файл .htaccess

  3. Сделайте резервную копию данного файла и сохраните ее, по возможности, в другом месте на компьютере.

  4. Откройте оригинальный файл .htaccess для редактирования, например, в блокноте. (.*)$ http://example.ru/$1 [R=301,L]

  5. Сохраните изменения в файле и загрузите его на сервер.

  6. После этого откройте браузер и в адресной строке введите адрес своего сайта без WWW, например http://example.ru/ и зайдите на сайт. Если Вы все сделали правильно, то в адресной строке браузера автоматически произойдет изменение — адрес сайта с введенного Вами сменится на http://www.example.ru/.

  7. Но чтобы на 100% быть уверенным в успешности проделанного я Вам советую зайти сюда, ввести адрес сайта без WWW. Данный инструмент покажет Вам, работает ли настроенный Вами 301 редирект или нет. Если Вы все сделали правильно, то должны будете увидеть следующее (особое внимание уделите выделенным жирным участкам кода):

№ 1 Server Response: http://example.ru

HTTP Status Code: HTTP/1.1 301 Moved Permanently

Date: Wed, 14 Mar 2007 22:49:28 GMT

Server: Apache/1. 3.27 (Unix) PHP/4.4.1 FrontPage/5.0.2.2510 mod_ssl/2.8.14 OpenSSL/0.9.6b

Location: http://www.example.ru/

Connection: close

Content-Type: text/html; charset=iso-8859-1

Redirect Target: http://www.example.ru/

№ 2 Server Response: http://www.example.ru/

HTTP Status Code: HTTP/1.1 200 OK

Date: Wed, 14 Mar 2007 22:49:28 GMT

Server: Apache/1.3.27 (Unix) PHP/4.4.1 FrontPage/5.0.2.2510 mod_ssl/2.8.14 OpenSSL/0.9.6b

Connection: close

Content-Type: text/html

  1. Если у Вас в ключевых (выделенных жирным) местах все сошлось, то все работает!

Если же Вы проделали указанные выше шаги и не добились требуемого результата, то воспользуйтесь резервной копией файла . htaccess – проделайте с ней еще раз все указанные выше шаги, но будьте предельно внимательны. Выверяйте каждый шаг.

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

источник

Как настроить 301 редирект в WordPress через htaccess: на https, без www

Автор Анита Арико На чтение 12 мин. Просмотров 4k. Опубликовано

Содержание

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

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

301 редирект — это специальный ответ сервера, который сообщает браузеру, что страница навсегда переехала на другой адрес (HTTP 301 Moved Permanently). При получении такого ответа браузер перенаправит пользователя на новый адрес.

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

Случаев, когда пользователей нужно перенаправить с одного адреса на другой, может быть очень много: это и переезд на другую систему управления сайтом, в результате которого меняются адреса страниц, и подключение протокола безопасности TLS, после которого HTTP-адреса меняются на HTTPS, и банальная опечатка в адресе страницы, которую не заметили сразу. 

Приводим небольшой список примеров, когда может понадобиться 301 редирект:

Дубликаты страниц

Самый частый пример использования 301 редиректа — избавление от дубликатов страниц, например, http://mysite.ru и http://mysite.ru/index.php. 301 редирект помогает сообщить поисковым системам, какой адрес страницы является для вас приоритетным, и выводить в выдаче только страницы по нужному адресу.

Переезд на другой домен

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

Склейка зеркал сайта

Один и тот же сайт может быть доступен сразу по нескольким адресам: например, http://www.mysite.ru и http://mysite.ru. Такие зеркала поисковые системы выбирают автоматически — поэтому в выдаче может выводиться часть страниц с www, часть без. Чтобы выбрать то зеркало сайта, которое будет продвигаться, для этого можно использовать 301 редирект.

Переход на HTTPS

При подключении безопасного протокола HTTPS имеет смысл сделать недоступной версию сайта с HTTP: это защитит пользователей сайта от исполнения вредоносного кода, который злоумышленники могут подгрузить при использовании HTTP. Для этого можно перенаправлять все переходы с http://mysite.ru на https://mysite.ru с помощью 301 редиректа.

Изменение адреса страницы

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

Перенаправление на мобильную версию сайта

Если у вас есть отдельная мобильная версия сайта, пользователей смартфонов и планшетов можно перенаправить на нее с помощью 301 редиректа. Если пользователь перейдет на http://mysite.ru с мобильного устройства, он попадет на http://mobile.mysite.ru, адаптированный для просмотра на небольших экранах.

Какие ещё бывают редиректы?

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

HTTP 302 Moved Temporarily, Found (временно перемещен)

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

При настройке 302 редиректа в индексе остаются обе страницы — и страница, с которой выполняется переадресация, и целевая страница.

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

HTTP 303 See Other (просмотр других ресурсов)

Этот редирект очень похож на 302 с единственным отличием: адрес, на который перенаправляет 303 редирект, никогда не кэшируется. Например, на сайте есть страница регистрации пользователей. Посетитель вводит свои данные и нажимает кнопку «Зарегистрироваться», после чего с помощью 303 редиректа сайт отправляет его на страницу «Спасибо за регистрацию», чтобы очистить данные, которые ввел пользователь.

HTTP 307 Temporary Redirect (Временный редирект)

Это еще один вид редиректа, аналогичный 302, только с сохранением введенных пользователем данных. К примеру, если после регистрации нужно отправить пользователя на страницу входа и использовать уже введенные им данные, используется 307 редирект.

Такой редирект подсказывает поисковым системам, что кэшировать адрес, на который совершается переадресация, не нужно: информация на нем будет меняться.

HTTP 308 Permanent Redirect (Перенаправление на постоянной основе)

Этот способ переадресации похож на 301, и Google воспринимает его так же, как 301: адреса «склеиваются», ссылочная масса переносится на новую страницу и новый адрес заменяет старый. Единственная разница в том, что при таком редиректе сохраняются введенные пользователем данные: например, если посетитель заполнил данные заказа и нажал кнопку «Подтвердить» и его нужно перенаправить на новую страницу благодарности, используется 308 редирект.

Почему лучше выбрать 301 редирект?

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

Как настроить 301 редирект с помощью плагинов?

Самый простой способ настроить 301 редирект в WordPress — использовать специальные плагины. Он не требует знаний программирования и регулярных выражений. Для переадресации с одной страницы на другую подойдут плагины Redirection, Easy 301 Redirect или другие похожие плагины.

Redirection

Установите и активируйте плагин Redirection. После активации он предложит сделать быструю настройку — рекомендуем включить мониторинг изменения постоянных ссылок (если вы поменяете ссылку на пост в WordPress, плагин заметит это и создаст переадресацию автоматически) и логирование редиректов.

После этого вы сможете создать любую переадресацию. Перейдите в меню Инструменты ⟶ Redirection на вкладку Редиректы. 

На странице отобразятся все настроенные редиректы. Тут же можно добавить новый — укажите адреса старой и новой страниц и нажмите «Добавить перенаправление».

Если вам будет нужно переадресовать весь домен на новый — это можно сделать во вкладке Сайт. Плагин позволяет добавить алиасы для сайта (несколько доменов для одного сайта, например, сайт.рф и site.ru) и настроить переадресацию для HTTPS и WWW. 

Easy 301 Redirects

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

Как сделать 301 редирект вручную

Для того, чтобы самостоятельно настроить переадресации, нужно отредактировать файл .htaccess — он расположен в корневой директории WordPress. Знание регулярных выражений и устройства веб-сервера Apache пригодятся.

Как редактировать .htaccess
Вариант 1 — встроенный текстовый редактор хостинга

Зайдите в корневую директорию WordPress и найдите файл . htaccess. 

Откройте его с помощью встроенного редактора (двойным кликом или через меню Файл — Открыть в текстовом редакторе).

Вариант 2 — создать в текстовом редакторе и загрузить на хостинг

Для этого лучше использовать продвинутые текстовые редакторы, например, Notepad++ или Sublime Text — они умеют сохранять файлы в кодировке UTF-8. 

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

Настройки .htaccess

Любые настройки в .htaccess должны начинаться с таких строк:

RewriteEngine On
RewriteBase /

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

RewriteCond [сравнение] [условие] [флаги]
RewriteCond [сравнение] [условие] [флаги]
RewriteRule [шаблон] [подстановка] [флаги]
RewriteCond

RewriteCond — это условие для переадресации. (.*)$ — это регулярное выражение, и оно означает, что в него можно подставить любые символы в любом количестве. Поэтому, если используется такое выражение, то, чтобы переадресация сработала верно, в RewriteRule адрес целевой страницы нужно указывать полностью, начиная с http/https и доменного имени.

Часто используемые переменные

%{REQUEST_URI} — часть запроса (адреса, по которому переходит пользователь) без доменного имени и GET-параметров (например, UTM-меток)

%{HTTP_HOST} — доменное имя, например, mysite.ru

%{QUERY_STRING} — GET-параметры, например, UTM-метки, фильтры и так далее.

Часто используемые флаги

[L] — говорит серверу, что это последнее правило и указывает не обрабатывать дальнейшие RewriteRule

[NC] — указывает, что запрос не зависит от регистра

[R=301] — 301 редирект (можно заменить на другой, если нужно). (.*)$ https://mysite.ru/ [R=301,L]

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

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

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

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

Резюме
  1. 301 редирект — это переадресация со старой страницы сайта на новую, когда старая была перемещена навсегда.
  2. 301 редирект используют, чтобы переехать на новое доменное имя, склеить зеркала сайта, перенаправить на HTTPS или мобильную версию сайта и другого — всегда, когда нужно переадресовать пользователя с одной страницы на другую.
  3. Кроме редиректа 301 бывают временные редиректы 302, 307 и еще один постоянный 308.
  4. Проще и лучше всегда использовать 301 редирект: при нем позиции в поисковой выдаче сохранятся.
  5. Настроить 301 редирект можно с помощью плагинов, например, Redirection или Easy 301 Redirects.
  6. 301 редирект можно настроить в файле .htaccess на сервере, но понадобятся знания, как устроен файл и как работают регулярные выражения.
  7. 301 редирект можно проверить, перейдя по старому адресу: если браузер открыл целевую страницу, все в порядке.
  8. А если нет, то сначала стоит обновить кэш и попробовать еще раз.
  9. Существуют специальные сервисы для массовой проверки 301 редиректов.

Как сделать 301 редирект .htaccess. Настройка переадресации страницы на сайте.

В этой статье Вы найдете:

  • Как правильно сделать 301 редирект;
  • Какие редиректы нужно в первую очередь сделать при SEO продвижении сайта;
  • Какие из них чаще всего используются при технической поддержке сайта. — спецсимвол начала строки;
  • $ — спецсимвол конца строки;
  • ! — спецсимвол отрицания;
  • . — точка, заменяет любой символ, но только один;
  • () — группировка;
  • \ — «экранирующий» слеш, следующий символ после него считается обычным, а не спецсимволом;
  • # — начало текстового комментария в файле.

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

  • ? — символ повторяется 0 или 1 раз.
  • + — повторяется от 1 до 65536 раз.
  • * — повторяется от 0 до 65536 раз.

Флаги, задают доп. опции для используемого правила. Перечисляются в квадратных скобках через запятую, скажем [NC] или [R=301,L].

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

регулярное выражение — htaccess принудительно https и перенаправляет www на не-www, но без других поддоменов

Спросил

Изменено 1 год, 3 месяца назад

Просмотрено 24k раз

24

Новинка! Сохраняйте вопросы или ответы и организуйте свой любимый контент.
Узнать больше.

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

 (1) http://www.mydomain.com/ ->
https://mydomain.com/ (2) http://mydomain.com/ -> https://mydomain.com/ (3) https://www.mydomain.com -> https://mydomain.com/

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

 (4) http://sub.mydomain.com/ -> https://sub.mydomain.com/
 

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

Вот решения, которые я уже пробовал:

  • Принудительно без www и https через htaccess
    • Вроде работает, но, кажется, создает цикл перенаправления
  • .htaccess перенаправить с www на без www с SSL/HTTPS
    • Подходит для (1) и (3), но не для (2)
  • htaccess принудительно с www на без www с учетом http или https
    • Перенаправляет на http://mydomain.com/ (без https) для (1)
    • Ничего не делает для (2)
    • Перенаправляет на http://mydomain.com/ (без https) для (3)

Мой SSL-сертификат распространяется на поддомен www, поэтому я не ищу решение ошибки «ненадежное соединение», я знаю, что это невозможно.

  • регулярное выражение
  • apache
  • .htaccess
  • mod-rewrite
  • https

Я обнаружил, что большинство предложений не учитывались, когда у вас было что-то, что было https://www.example.com и перенаправляло на https://www.example.com ://example.com. 9https://%1%{REQUEST_URI} [L,R=301,NE]

Этот сценарий будет перенаправлять

  • http://domain.com
  • http://www.domain.com
  • https://www.domain.com

до

  • https://domain.com

с сохранением поддомена.

Я обнаружил, что следующий ответ будет соответствовать вашему требованию:

www от до без www с https но без других субдоменов 9(.*)$ https://%1/$1 [R=301,L] RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Выполните все три (3) условия:

 (1) http://www. example.com/ -> https://example.com/
(2) http://example.com/ -> https://example.com/
(3) https://www.example.com -> https://example.com/
 

, но нет других поддоменов, кроме www вот так:

 (4) http://others.example.com -> https://others.example.com/
(5) https://others.example.com -> https://others.example.com/
 9(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
 

Я использую сервисы Cloudways, и я обнаружил, что это единственное, что работает

Изменено 3 года назад

Просмотрено 85 тысяч раз

29

Новинка! Сохраняйте вопросы или ответы и организуйте свой любимый контент.
Узнать больше. 9www\. [НЗ] RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301] RewriteCond %{HTTPS} !on RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]

Используется как для www, так и для не-www Если вы пытаетесь открыть ссылку с www, то URL-адрес перенаправляется на https с www

 Пример: http://domain. (.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 9(.*)$ [НЗ]
   RewriteRule (.*) https://www.example.com/$1 [L,R=301]

 

Почему иногда вам не нужен код %{HTTP_HOST} и использовать точный URL-адрес вашего домена с www в последней строке, потому что обычно в результате будет два www, например:

 https://www.www.yourdomain .com
 

Кстати, если вы используете cloudflare, просто создайте правила страницы, перенаправляющие 301 все на версию https и www.

Создать правила страницы Заполните

 example.com/*
 

Выберите настройку URL-адреса для пересылки, затем выберите 301 и заполните этим 9(.*)$ «https\:\/\/www\.example\.com\/$1» [R=301,L]

Примечание. Вы должны изменить example.com на свой собственный домен.

1

Как перенаправить HTTP на HTTPS и с www на без www

Все хорошо, но как убедиться, что старые ссылки не приводят к ошибке 404?

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

Перенаправление ваших ссылок с http на https

Сайты, которые существуют более двух лет, в основном некоторое время работали без защиты SSL. Их URL-адрес по умолчанию начинался с http://. Теперь на этих сайтах установлена ​​безопасность SSL, поэтому их URL-адрес по умолчанию начинается с https://.

Однако существует множество ссылок, указывающих на тот сайт, который все еще использует http://, и многие люди все еще используют http:// при вводе URL-адреса. Все эти ссылки должны перенаправлять на новый URL той же страницы.

Вы можете создавать перенаправления для каждой страницы отдельно, но гораздо проще иметь в файле .htaccess правило, которое делает это автоматически.

Примечание: НИЧЕГО не меняйте в файле .htaccess, если у вас нет рабочей копии файла на рабочем столе. Любая опечатка в файле приведет к падению вашего сайта. 9(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Предупреждение: если вы используете этот код на сайте WordPress и у вас есть плагин, который перенаправляет http на https, либо отключите эту функцию, либо не используйте этот код. Это создаст петлю редиректов, и ваш сайт будет недоступен!

Перенаправление ваших ссылок с https на http

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

 # Перенаправить HTTPS на HTTP
 c>
RewriteEngine включен
RewriteCond %{HTTPS} на
Правило перезаписи (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 

Перенаправление ваших ссылок с www на не-www

Когда веб-сайты были чем-то новым, все URL-адреса начинались с www, что означает World Wide Web . В настоящее время большинство веб-сайтов отказываются от www и просто используют более короткий URL-адрес.

Чтобы перенаправить все входящие ссылки с www на их эквиваленты без www, вы можете использовать этот код в своем 9(.*) http://www.%1/$1 [R=301,NE,L]

Перенаправление ваших ссылок с http на https и с www на не-www

Приведенные выше фрагменты кода делают только одну вещь — и делают это хорошо — но вы также можете объединить код в одну комбинированную переадресацию.

Приведенный ниже код перенаправляет любую ссылку http на ее точный эквивалент, начинающийся с https, И в процессе перенаправляет любую ссылку с www на ее эквивалент без www в URL:

 # 301 ПЕРЕНАПРАВЛЕНИЕ HTTP НА HTTPS И WWW НА НЕ WWW