Переход с HTTP на HTTPS

Переход с HTTP на HTTPS

Настройки сервера, 🔀 у каждого поставщика услуг хостинга для ✅ вашего сайта фриланс-биржи на CMS Cotonti, могут различаться незначительно, а то и существенно и это зависит от ряда особенностей, но предметом их обсуждения должна быть отдельная статья.
Сейчас же, мы затронем именно проблемы ⛔ перехода с http на защищенный протокол HTTPS после установки сертификата безопасности.

При «переезде» с http на https алгоритм последовательных действий следующий:

1. Покупка SSL-сертификата
2. Установка сертификата на сервере
3. В /datas/config.php переменной $cfg[‘mainurl’] = » сайт указать с протоколом https
4. Замена всех абсолютных http ссылок в шаблонах темы (в нормально сделанном сайте в php файлах ничего менять не нужно) и yourthemename.rc.php
5. Замена всех абсолютных http ссылок в базе
6. Редиректы в .httacces

П.С. Вообще очевидно, что перед всем серьезными правками на сайте или базе делаем резервную копию и скачиваем на компьютер.

При возникновении таких проблем, самый простой, очевидный и работающий способ решить проблему перехода с http на https — это обратиться в техподдержку хостинг-провайдера или читаем документацию по решению вопросов на вашем хостинге.
Но если с этим всё не так хорошо как хотелось бы, то пока не спешим сменить хостера.
Заходим на хостинг в папку нашего сайта фриланс биржи, открываем, если по FTP, предназначенной для этого программой (редакторы кода, например Notepad++) файл /datas/config.php и находим строку

$cfg['mainurl'] = 'http://mysite.com';

 

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

Затем, в корне папки вашего сайта биржи фриланса на Котонти открываем файл «.htaccess» той же программой для редактирования кода файлов сайта. И здесь, как и ранее говорилось, о незначительных или существенных различиях настройки каждого сервера у разных хостинг провайдеров, — придется пробовать разные варианты устранения проблемы перехода с http на защищенный протокол HTTPS. В файл «.htaccess», желательно ближе к началу вносим код ниже и сохраняемся, а затем проверяем корректность отображения страниц сайта фриланс биржи после перехода на защищенный протокол HTTPS, умышленно, направляя сайт по протоколу HTTP, например вставляем в адресную строку браузера адрес вашего сайта http://mysite.com и жмем «Enter». Обратите внимание, адрес сайта вставляем без HTTPS.

И так…
Вариант №1

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

 

Вариант №2

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

 

Вариант №3

RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

 

Вариант №4

RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

 

Вариант №5

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule ^(.*)$ https://www.site.ru/$1 [L]

 

Вариант №6

RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

 

Вариант №7

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

 

Вариант №8

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

 

 


SSL — HTTPS проблема ( порт 80 )

На веб-серверах Nginx встречается проблема с портом 80 и авторизацией на сайте, например при входе в админку, то такую проблему можно решить заменой строк кода в файлах движка, чего крайне не рекомендуется делать вообще не с одним файлом из самого движка, — лучше уже смените хостера. Но если нет, то на свой страх и риск:
В файле /system/common.php

в районе 78-79 строки находим код:

$sys['abs_url'] = $sys['scheme'] . '://' . $sys['host'] . ($sys['port']?':'.$sys['port']:'') . $sys['site_uri'];
$sys['canonical_url'] = $sys['scheme'] . '://' . $sys['host'] . ($sys['port']?':'.$sys['port']:'') . cot_url_sanitize($_SERVER['REQUEST_URI']);

 

меняем на:

$sys['abs_url'] = $sys['scheme'] . '://' . $sys['host'] . $sys['site_uri'];
$sys['canonical_url'] = $sys['scheme'] . '://' . $sys['host'] . cot_url_sanitize($_SERVER['REQUEST_URI']);

 

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


Задать вопрос и получить консультацию

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

Благодарность и поддержка сайта по сборке «Фриланс-Биржа»

Если Вам, материалы проекта Freelance PHP Script принесли хоть какую-то помощь или пользу, и при повторном посещении нашего сайта, Вы желаете, чтобы сайт был доступен, просим понимать, что сейчас сайт держится на голом энтузиазме, а вечным он не бывает. Без Вашей посильной финансовой поддержки, небольшого доната, — техническое содержание, обслуживание, развитие и размещение новых бесплатных материалов просто станет не целесообразным.
На позитив, чашку кофе и на желание развивать проект, можно удобным способом в любой валюте закинуть на странице Сказать спасибо. Поддержать сайт.

One Reply to “Переход с HTTP на HTTPS”

  1. Может кому пригодится. по материалам с сайта
    И так начинаем разбиратся почему в <base href=»»> попадает ссылка с портом …. в файле common.php есть 78 строка из которой видим что если $sys[‘port’] пустой то все норм а если в нем будет цифра то она и попадет в урл … смотрим выше в 73 строку где идет определение этого параметра, а там условие если $sys[‘port’] == $def_port то будет все ок .

     

    Но у вас $sys[‘port’] будет равен 80 (что не верно и при этом он в итоге еще и попадает в урл) ? а  $def_port на основе ваши данных очевидно будет равен 443 (что верно поскольку сайт работает по безопасному протоколу).

     

    Разберемся по очереди, сперва то что определилось корректно на основе 54 строки

    $sys['scheme'] = strpos($_SERVER['SERVER_PROTOCOL'], 'HTTPS') === false && $_SERVER['HTTPS'] != 'on' && $_SERVER['SERVER_PORT'] != 443 && $_SERVER['HTTP_X_FORWARDED_PORT'] !== 443 ? 'http' : 'https';

    Разберем это уловие:

    ЕСЛИ strpos($_SERVER[‘SERVER_PROTOCOL’], ‘HTTPS’) === false

    И $_SERVER[‘HTTPS’] != ‘on’

    И $_SERVER[‘SERVER_PORT’] != 443

    И $_SERVER[‘HTTP_X_FORWARDED_PORT’] !== 443

    ТОГДА = http ИНАЧЕ https

    Увидели что у вас хотя бы одно условие $_SERVER[‘HTTPS’] = ‘on’ ? а потому движок корректно думает что $sys[‘scheme’] = https

    Если $sys[‘scheme’] = https то поэтому $def_port и получил значение 443.

     

    Ну и самое сладкое на десер. Почему $sys[‘port’] будет не верно равен 80 ? Ну наверное потому что в 65 строке

    $sys['port'] = $_SERVER['SERVER_PORT'];

    а у вас сервер дает [SERVER_PORT] => 80 …. почему? Почему если вы используете https протокол? Вопрос не по адресу. Я то догадываюсь но результата это не меняет — заголовки противоречивые.

     

    Так может движок корректно работать если ему сервер дает противоречивую информацию?!

     

    З.Ы. Расписал достаточно подробно что бы каждый мог при желании вникнуть и понять где ошибка. Как правило у большинства все работает корректно но не так уж и редко последнее время стали встречатся сервера где вот такая каша и у людей начинаются проблемы. А если они есть то сразу нужно смотреть на вот такие параметры которые отдает сервер $_SERVER[‘SERVER_PROTOCOL’] $_SERVER[‘HTTPS’] $_SERVER[‘SERVER_PORT’] $_SERVER[‘HTTP_X_FORWARDED_PORT’] и то что вы прописали в $cfg[‘mainurl’]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *