Товарищи! Мучаюсь третий день с переводом магазина на HTTPS. CMS OpenCart 2.2.0.0.
Сертификат получил и на хостинг его залил. Тут все получилось без проблем.
По тех.условиям хостинга добавил в шапку .htaccess строки
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Сам .htaccess получился такой (настраиваю так сказать в песочнице, .htaccess чистый с установки)
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Options +FollowSymlinks
Options -Indexes
<FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))">
Order deny,allow
Deny from all
</FilesMatch>
RewriteEngine On
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
В конфигах согласно тех.условиях OpenCart прописал изменения да HTTPS_SERVER
<?php
// HTTP
define('HTTP_SERVER', 'http://shop.ru/');
// HTTPS
define('HTTPS_SERVER', 'https://shop.ru/');
и
<?php
// HTTP
define('HTTP_SERVER', 'http://shop.ru/admin/');
define('HTTP_CATALOG', 'http://shop.ru/');
// HTTPS
define('HTTPS_SERVER', 'https://shop.ru/admin/');
define('HTTPS_CATALOG', 'https://shop.ru/');
соответственно.
В настройках магазина включил "Использовать SSL".
Казалось бы на этом все приключения должны закончиться. Но не тут то было.
Сам магазин и админка открываются по HTTPS. Но
1. В самом магазине все внутренние ссылки остались по HTTP. По совету старших товарищей в /system/library/request.php дописал
public function is_ssl() {
if ( isset($_SERVER['HTTP_SSL']) ) {
if ( 'on' == strtolower($_SERVER['HTTP_SSL']) )
return true;
if ( '1' == $_SERVER['HTTP_SSL'] )
return true;
} elseif ( isset($_SERVER['HTTPS']) ) {
if ( 'on' == strtolower($_SERVER['HTTPS']) )
return true;
if ( '1' == $_SERVER['HTTPS'] )
return true;
} elseif ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && ( 'https' == strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) ) ) {
return true;
} elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
return true;
} elseif ( isset($_SERVER['HTTP_X_FORWARDED_PORT']) && ( '443' == $_SERVER['HTTP_X_FORWARDED_PORT'] ) ) {
return true;
}
return false;
}
а в /system/library/url.php
public function is_https() {
return preg_match('/https:\/\//', $this->ssl);
}
Модификаторы обновил, кэш удалил - ничего не изменилось.
2. Не могу зайти в админку. Страница авторизации открывается, после ввода логина/пароля без каких-либо сообщений об ошибке и т.д. вход в админку не происходит, и собственно отображается стандартное окно авторизации.
Что делать и как быть не знаю. Перечитал кучу форумов, решения найти не могу!!! ПОМОГИТЕ!!!