.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. Если у Вас в ключевых (выделенных жирным) местах все сошлось, то все работает!

Если же Вы проделали указанные выше шаги и не добились требуемого результата, то воспользуйтесь резервной копией файла . example.com [NC] RewriteRule (.*) https://example.com%{REQUEST_URI} [R=301,L]

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

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

спросил

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

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

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

Вот что я пытаюсь сделать:

 (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.ex ample.com и перенаправление на https ://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 года, 7 месяцев назад

Просмотрено 89www\.