[Помогите] редирект с www, и с http

Тема в разделе "OpenCart", создана пользователем Love-world, 26 янв 2018.

  1. Love-world

    Love-world

    Регистрация:
    17 июл 2013
    Сообщения:
    161
    Симпатии:
    75
    Всем привет, прошу знающих проверить правильность моих действий. (ocstore 2.3)
    Задача:
    1. настроить редирект с www на без www
    2. Настроить редирект с http на https
    Делаю так:
    1. Включил ssl в админке
    2. Отрепетировал файлы конфигов
    конфиг в корне выглядит так
    Код:
    // 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?! Есть такая возможность.
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Поменяйте директивы местами. У вас редирект "www -> not www" уже направляет на https, так что двойно редирект указывает на то, что этот редирект при заходе по http вообще не срабатывает.

    Это как?
     
  3. Love-world

    Love-world

    Регистрация:
    17 июл 2013
    Сообщения:
    161
    Симпатии:
    75
    Дело в том, что по факту все работает, и при https и при http, редиректит на без www, но вот только при варианте с http, получается (судя по консоли) два редиректа.
    Попробовал поменять местами, такая же ерунда. Это нормально?! Меня интересует как это воспримут поисковики..

    Вообще, при переходе на https, просто настраивается редирект, или есть еще способы, как отключить http?
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Я это понял и с первого раза, можно было не писать ещё раз :Smile:
    Я же говорю, двух редиректов быть не должно. Если срабатывает редирект "www -> not www", то он сразу должен перекидывать на https! Если этого не происходит, значит при заходе по http этот редирект вообще не срабатывает.
    Покажите весь .htaccess.

    Кстати, браузеры кешируют 301й редирект. Попробуйте после перестановки директив проверить в браузере, которым вы ещё не проверяли.

    Есть HSTS (HTTP Strict Transport Security), но я не уверен, поддерживают ли его поисковые боты. Хотя, если у вас есть возможность его включить, то это только в плюс пойдёт.
    А вообще, редирект - это стандартный нормальный способ перенаправить все запросы на https.
     
    mr.Elias нравится это.
  5. Love-world

    Love-world

    Регистрация:
    17 июл 2013
    Сообщения:
    161
    Симпатии:
    75
    Хм.. да действительно закешировалтись, поменял директивы местами, открыл окно браузера в режиме инкогнито, и теперь в консоли один редирект, все работает как нужно. Спасибо вам.
    Да, почитав яндексовский мануал, так и понял.. :Ok:
    Вот содержимое .htaccess (родной ocstor'евский + директивы для редиректа), вдруг кому пригодится:
     
  6. mr.Elias

    mr.Elias

    Регистрация:
    15 июн 2013
    Сообщения:
    319
    Симпатии:
    54
    Однозначно. потому редирект лучше в инкогнито проверять или чистить каждый раз кеш. Сам долго мучался, пока не понял что дело в браузере!
     
  7. aleksin74

    aleksin74

    Регистрация:
    4 ноя 2012
    Сообщения:
    150
    Симпатии:
    272
    все зависит от хостинга, на моем работает так...
    Код:
    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]
     
  8. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Плохой пример. Точки надо экранировать в условии, иначе точка означает любой символ и домен лучше не вписывать.
     
  9. aleksin74

    aleksin74

    Регистрация:
    4 ноя 2012
    Сообщения:
    150
    Симпатии:
    272
    вы про какие точки?
    --- Добавлено, 11 фев 2018 ---
    исправил на это
    Код:
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    
    
    так правильнее?
     
    Последнее редактирование: 11 фев 2018
  10. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Про эти:
    Код:
    ^www.***.ru$
    Это регулярное выражение, а точка в регулярках означает "любой символ".

    Да.
     
  11. mr.Elias

    mr.Elias

    Регистрация:
    15 июн 2013
    Сообщения:
    319
    Симпатии:
    54
    Как переадресовывать правильно без "ru"?
    то есть чтобы полностью универсально было для, к примеру, .com, .org, .net, ...?
     
  12. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Код:
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
     
    mr.Elias и aleksin74 нравится это.
  13. aleksin74

    aleksin74

    Регистрация:
    4 ноя 2012
    Сообщения:
    150
    Симпатии:
    272
    Спасибо за совет
     
  14. hr dealer

    hr dealer

    Регистрация:
    2 фев 2018
    Сообщения:
    10
    Симпатии:
    0
    Доброго времени суток, господа. Месяц назад перевел сайт на https и теперь узнал о том, что вроде необходимо сделать настройки редиректа. Нужно ли это? и как правильно это сделать? ниже содержимое файла Htaccess
     
    Lasted edited by : 23 фев 2018
  15. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Нужно.
    После
    Код:
    RewriteBase /
    добавить:
    Код:
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
     
    Zulus нравится это.