Всем привет, прошу знающих проверить правильность моих действий. (ocstore 2.3) Задача: настроить редирект с www на без www Настроить редирект с http на https Делаю так: Включил ssl в админке Отрепетировал файлы конфигов конфиг в корне выглядит так Код: // HTTP define('HTTP_SERVER', 'https://сайт.ру/'); // HTTPS define('HTTPS_SERVER', 'https://сайт.ру/'); конфиг в /admin так Код: // HTTP define('HTTP_SERVER', 'https://сайт.ру/admin/'); define('HTTP_CATALOG', 'https://сайт.ру/'); // HTTPS define('HTTPS_SERVER', 'https://сайт.ру/admin/'); define('HTTPS_CATALOG', 'https://сайт.ру/'); прописал такие редиректы в .htaccess (seo url включены - seo pro) Код: # Redirect http -> https RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # # Redirect www -> not www RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] # Настроил директиву host в robots Чекнул ответ сервера в консоли браузера и в https://webmaster.yandex.ru/tools/server-response/ Вроде все ок и все работает, но есть вопрос. При такой вот конструкции http://www.сайт.ру/ Получается двойной редирект, вначале на https://www.сайт.ру/, потом на https://сайт.ру/ но в яндексе при вводе этой конструкции он первый видит редирект на https://www.сайт.ру/, будет ли он потом редиректить на https://сайт.ру/ и адекватно воспринимать все это дело ??? И в целом, правильны ли мои действия, или может быть можно как-то сразу движок с нуля поставить на https?! Есть такая возможность.
Поменяйте директивы местами. У вас редирект "www -> not www" уже направляет на https, так что двойно редирект указывает на то, что этот редирект при заходе по http вообще не срабатывает. Это как?
Дело в том, что по факту все работает, и при https и при http, редиректит на без www, но вот только при варианте с http, получается (судя по консоли) два редиректа. Попробовал поменять местами, такая же ерунда. Это нормально?! Меня интересует как это воспримут поисковики.. Вообще, при переходе на https, просто настраивается редирект, или есть еще способы, как отключить http?
Я это понял и с первого раза, можно было не писать ещё раз Я же говорю, двух редиректов быть не должно. Если срабатывает редирект "www -> not www", то он сразу должен перекидывать на https! Если этого не происходит, значит при заходе по http этот редирект вообще не срабатывает. Покажите весь .htaccess. Кстати, браузеры кешируют 301й редирект. Попробуйте после перестановки директив проверить в браузере, которым вы ещё не проверяли. Есть HSTS (HTTP Strict Transport Security), но я не уверен, поддерживают ли его поисковые боты. Хотя, если у вас есть возможность его включить, то это только в плюс пойдёт. А вообще, редирект - это стандартный нормальный способ перенаправить все запросы на https.
Хм.. да действительно закешировалтись, поменял директивы местами, открыл окно браузера в режиме инкогнито, и теперь в консоли один редирект, все работает как нужно. Спасибо вам. Да, почитав яндексовский мануал, так и понял.. Вот содержимое .htaccess (родной ocstor'евский + директивы для редиректа), вдруг кому пригодится:
Однозначно. потому редирект лучше в инкогнито проверять или чистить каждый раз кеш. Сам долго мучался, пока не понял что дело в браузере!
все зависит от хостинга, на моем работает так... Код: RewriteBase / ### переадресация http на https RewriteCond %{ENV:HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] ### переадресация с www RewriteCond %{HTTP_HOST} ^www.***.ru$ [NC] RewriteRule ^(.*)$ https://***.ru/$1 [R=301,L]
Плохой пример. Точки надо экранировать в условии, иначе точка означает любой символ и домен лучше не вписывать.
вы про какие точки? --- Добавлено, 11 фев 2018 --- исправил на это Код: RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] так правильнее?
Про эти: Код: ^www.***.ru$ Это регулярное выражение, а точка в регулярках означает "любой символ". Да.
Как переадресовывать правильно без "ru"? то есть чтобы полностью универсально было для, к примеру, .com, .org, .net, ...?
Доброго времени суток, господа. Месяц назад перевел сайт на https и теперь узнал о том, что вроде необходимо сделать настройки редиректа. Нужно ли это? и как правильно это сделать? ниже содержимое файла Htaccess
Нужно. После Код: RewriteBase / добавить: Код: RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]