Recommended Posts

Дописать в robots.txt параметр Host: и изменить там-же ссылку на sitemap + изменить название сайта в Админке Настройки-Общее.

А вот зачем это нужно? Обязательность указания www была необходима на заре становления Интернета, когда надо было явно указать, что это веб-сайт, добавляя к названию домена www. В настоящее время это анахронизм и надобности такой нет. Поисковикам и браузерам разницы нет, как вы укажете свой домен с www или без. Это будет актуально в том случае, если у вас сайты разные - с www и без www, при этом поисковым сервисам специально на это указывают. Изменив домен действующего сайта на www, вам придется их по новой зарегистрировать в поисковых сервисах, поскольку в их понимании это другой сайт, страницы вашего сайта выпадут из поиска, а спустя месяц-два, после многократного переобхода страниц нового сайта поисковики загрузят содержимое сайта по новой и еще через квартал - полгода выяснят, что старый и новый сайт - одно и то-же и склеят его, при этом не факт, что сайт с www будет основным, после чего потребуется его переклеить... Вам этот геморрой нужен?

Лучше оставьте его как есть и в .htaccess пропишите директиву (301 редирект) с адресацией на текущий домен вне зависимости от того, как пользователь укажет - с www или без... 

Вариант 1 

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
</IfModule>

Вариант 2

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>

Вариант 3 

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} !^site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
</IfModule>

Выбирайте, какой больше нравится :)

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

PS: Вышеизложенное актуально, если в настройках домена на хостинге указан основной домен и домен с www в качестве зеркала, т.е. речь идет об одном сайте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Домен новый. Что не на что не влияет www в курсе. Так можно?

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

нет, здесь у вас 2 противоречивые инструкции:

1. Обращение к сайту с www или без www адресовать на https://....

2. Обращение к сайту с www или без www адресовать на http://www... 

Будут глюки, поскольку обработка зациклится от таких непоняток и сайт будет недоступен...

Если сайт на http и варианты с www и без www надо адресовать на http://... то выбирайте любой из 3-х вышеуказанных вариантов

Если ваш сайт на https, и варианты с www и без www надо адресовать на https://... то пишем указываем как ниже (при условии что прокатит, не все хостинги работают по защищенному протоколу через 443 порт), возможны варианты, если возникают проблемы:

Вариант 1

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

или вариант 2

RewriteEngine On
RewriteCond %{HTTPS} =on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

или вариант 3 (если не помогли вышеуказанные)

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

Если вам нужна переадресация запроса без www на http://www... тогда так:

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

или так:

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поставил:

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

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

Написал в тех. поддержку beget, ответ:

34545645.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Зачем вам нужно было указывать 2 инструкции для переадресации на https ? Эти лишняя обработка запроса. Они в принципе одинаковы, первая берет информацию о названии домена из {SERVER_NAME} (см. настройки домена и хостинга), во втором вы прямо на это указываете. В принципе, вторую можно убрать или воспользоваться вариантами 2 или 3 для переадресации на https, где название домена берется из параметра Host, который вы указали в robots.txt  

вариант 2

RewriteEngine On
RewriteCond %{HTTPS} =on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

или вариант 3 (если не помогли вышеуказанные)

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

если в robots.txt указали Host: https://www.ru009.ru, то по одному из этих правил варианты должны нормально переадресовываться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Этот вроде подошёл.

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

  В robots.txt указал Host: https://www.ru009.ru

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну если при обращении через www и без www (не указывая протокол), однозначно переадресует как надо, то вопрос решен

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все таки должно быть два захода.

#Если нет www, то не глядя, что там за протокол, сразу заворачиваем на https://www.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^ru009.ru
RewriteRule (.*) https://www.ru009.ru/$1 [L,R=301]

#Если предыдущее прокатило (www таки было), но все таки не https, то заворачиваем на https://
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня установлено так:

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

если обращение с www,  то открывается https://www.мой_сайт

если обращение без www, то открывает https://мой_сайт

работают оба варианта, но основной без www (host в robots.txt)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас