Настройки сервера, 🔀 у каждого поставщика услуг хостинга для ✅ вашего сайта фриланс-биржи на 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.
Options -Indexes RewriteEngine On #301 редирект с домена с WWW на домен без WWW RewriteCond %{HTTP_HOST} ^www.mysite.com$ [NC] RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L] #Перенос сайта на версию с HTTPS (для всех страниц) RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTP} =on RewriteRule ^(.*)$ https://mysite.com/$1 [R=301,L]
И так…
Вариант №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 принесли хоть какую-то помощь или пользу, и при повторном посещении нашего сайта, Вы желаете, чтобы сайт был доступен, просим понимать, что сейчас сайт держится на голом энтузиазме, а вечным он не бывает. Без Вашей посильной финансовой поддержки, небольшого доната, — техническое содержание, обслуживание, развитие и размещение новых бесплатных материалов просто станет не целесообразным.
На позитив, чашку кофе и на желание развивать проект, можно удобным способом в любой валюте закинуть на странице Сказать спасибо. Поддержать сайт.
Может кому пригодится. по материалам с сайта
И так начинаем разбиратся почему в <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’]