Jump to content

Recommended Posts

44 минуты назад, valentin911 сказал:

Не могу найти, пожалуйста сбросьте ссылку.

Вы проверьте у себя тоже папку /system/library/url.php, при необходимости внесите изменения.

 

Dotrox говорит:"Поэтому простой и правильный вариант заставить по умолчанию все ссылки, которые формируются через $this->url->link использовать https - это исправить в указанном файле дефолтное значение на true."

Мне помогло.

Edited by Atlet

Share this post


Link to post
Share on other sites
В 22.03.2017 в 16:33, Dotrox сказал:

Нет. Заменить нужно только в первой строчке, то есть здесь:


public function link($route, $args = '', $connection = 'NONSSL') {

 

У меня такой строчки в файле нет на моей версии, что тогда менять и где? 

 

<?php
class Url {
    private $domain;
    private $ssl;
    private $rewrite = array();

    public function __construct($domain, $ssl = '') {
        $this->domain = $domain;
        $this->ssl = $ssl;
    }

    public function addRewrite($rewrite) {
        $this->rewrite[] = $rewrite;
    }

    public function link($route, $args = '', $secure = false) {
        if (!$secure) {
            $url = $this->domain;
        } else {
            $url = $this->ssl;
        }

        $url .= 'index.php?route=' . $route;

        if ($args) {
            if (is_array($args)) {
                $url .= '&amp;' . http_build_query($args);
            } else {
                $url .= str_replace('&', '&amp;', '&' . ltrim($args, '&'));
            }
        }

        foreach ($this->rewrite as $rewrite) {
            $url = $rewrite->rewrite($url);
        }

        return $url;
    }
}

Share this post


Link to post
Share on other sites
5 часов назад, Atlet сказал:

Dotrox говорит:"Поэтому простой и правильный вариант заставить по умолчанию все ссылки, которые формируются через $this->url->link использовать https - это исправить в указанном файле дефолтное значение на true."

Мне помогло.

 

Куда конкретней добавить это значение true в вышеуказанный файл?

Буду очень благодарен за ответ.

Заранее спасибо.

Share this post


Link to post
Share on other sites
23 минуты назад, valentin911 сказал:

Куда конкретней добавить это значение true в вышеуказанный файл?

Здесь (вместо false):

public function link($route, $args = '', $secure = false) {

 

Share this post


Link to post
Share on other sites
В 15.12.2016 в 16:24, irybka сказал:

У меня пока на главной в html блоках не исправил ссылки с http на https не появлялся значок замка (ссылки были и на внутренние страницы и на изображения в каталоге сайта). Все остальные страницы и админка грузились с замочком.

Здравствуйте, скажите пожалуйста. В каком файле вы правили ссылки? Когда набираешь в строке,например, site.ru, то выходит главная станица без https (просто sait.ru) и нет иконок 

gs2.png.b101a789fba50c71500a21417c6f9be2.png

все остальные страницы работают с https. Попробовал почти все, кроме модуля Марка, наверное. Спасибо.

Edited by Maxin

Share this post


Link to post
Share on other sites
12 часов назад, Maxin сказал:

Здравствуйте, скажите пожалуйста. В каком файле вы правили ссылки? Когда набираешь в строке,например, site.ru, то выходит главная станица без https (просто sait.ru) и нет иконок 

gs2.png.b101a789fba50c71500a21417c6f9be2.png

все остальные страницы работают с https. Попробовал почти все, кроме модуля Марка, наверное. Спасибо.

По шагам:

1.) в файле config.php прописано 

// HTTP
define('HTTP_SERVER', 'https://site.ru/');

// HTTPS
define('HTTPS_SERVER', 'https://site.ru/');

 

2.) в файле admin/config.php прописано

// HTTP
define('HTTP_SERVER', 'https://site.ru/admin/');
define('HTTP_CATALOG', 'https://site.ru/');

// HTTPS
define('HTTPS_SERVER', 'https://site.ru/admin/');
define('HTTPS_CATALOG', 'https://site.ru/');

 

2.1) Включил SSL в админке.

 

3.) выполнил рекомендацию @Dotrox в /system/library/url.php поставил true 

В 30.03.2017 в 00:07, Dotrox сказал:

Здесь (вместо false):


public function link($route, $args = '', $secure = false) {

 

 

4.) Поставил модуль Марка

5.) в файле .htaccess прописано по рекомендации хостера


Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

 

6.) обновил кэш везде где только можно. 

везде где мне нужно появляется https://, шрифт fontawesome везде работает.

*site.ru - это имя сайта. Все что сделано, сделано путем проб и ошибок. Может что-то и не надо, но этот вариант у меня заработал. Ура!!) Спасибо всем.

 

Edited by Maxin

Share this post


Link to post
Share on other sites
10 часов назад, Maxin сказал:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

 

Это что за маразм? Если это 1 в 1 рекомендация хостера, то там в поддержке работают клинические идиоты!

Допустим, поддержка не знает нюансов ОК, но трижды "RewriteEngine On" - этому оправдания нет. Ну, и в плане ОК этот .htaccess должен вызвать кучу проблем.

 

 

Вот правильный .htaccess:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Редиректы ОК для сайтмапа и т.д.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

 

Edited by Dotrox
  • +1 1

Share this post


Link to post
Share on other sites
12 минут назад, Dotrox сказал:

Это что за маразм? Если это 1 в 1 рекомендация хостера, то там в поддержке работают клинические идиоты!

Допустим, поддержка не знает нюансов ОК, но трижды "RewriteEngine On" - этому оправдания нет. Ну, и в плане ОК этот .htaccess должен вызвать кучу проблем.

 

 

Вот правильный .htaccess:


Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Редиректы ОК для сайтмапа и т.д.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

 

Да. Возможно, я не правильно понял рекомендации). Спасибо. Попробую.

Share this post


Link to post
Share on other sites
11 часов назад, Dotrox сказал:

Вот правильный .htaccess:


Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Редиректы ОК для сайтмапа и т.д.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

 

Уважаемый @Dotrox все работает как часы. На хосте все рекомендации начинались со слов "Вставьте этот код." А начинался он с "RewriteEngine On", три разных кода, три RewriteEngine On. Огромное спасибо.

Share this post


Link to post
Share on other sites

Кто использует SSL-сертификаты от StartCom и WoSign - вот такая печалька: https://blog.mozilla.org/security/2016/10/24/distrusting-new-wosign-and-startcom-certificates/

И вот еще новости от Гугла https://www.bleepingcomputer.com/news/security/google-to-show-errors-for-sha1-certificates-starting-with-chrome-56/

SHA-1 сертификаты больше не считаются доверенными

Share this post


Link to post
Share on other sites

Здравствуйте. 

получил бесплатный Сертификат для теста ocstore 2.3.0.2.

в конфигах изменил 

// HTTP
define('HTTP_SERVER', 'http://****/admin/');
define('HTTP_CATALOG', 'http://****/');

// HTTPS
define('HTTPS_SERVER', 'https://****/admin/');
define('HTTPS_CATALOG', 'https://****/');
// HTTP
define('HTTP_SERVER', 'http://****/');

// HTTPS
define('HTTPS_SERVER', 'https://****/');

не которые ссылки открывается с https а некоторые через http

например все категории в меню через http.

в админке тоже включил SSL

ссылка на сайт http://gourl.su/2f8

Edited by sanyok

Share this post


Link to post
Share on other sites
1 час назад, sanyok сказал:

не которые ссылки открывается с https а некоторые через http

Решение выше:

 

Share this post


Link to post
Share on other sites
В 16.02.2011 в 00:03, afwollis сказал:

Сертификат есть?

Если нет - обращайтесь к хостеру.

Если да, то для того, чтобы активировать SSL в магазине надо:

1. заменить

 


// HTTPS
define('HTTPS_SERVER', 'http://test2.opencart/admin/');
define('HTTPS_IMAGE', 'http://test2.opencart/image/');

на

 


// HTTPS
define('HTTPS_SERVER', 'https://test2.opencart/admin/');
define('HTTPS_IMAGE', 'https://test2.opencart/image/');

в файле

 


admin/config.php

2. Включить SSL в настройках магазина в админке.

Мне помогло! Спасибо!

Share this post


Link to post
Share on other sites
В 01.12.2016 в 20:22, Exploits сказал:

Попробуйте в index.php вставить такой код:


if(!isset($_SERVER['HTTPS'])){
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_URL']);
    exit();
}

Огромное Вам спасибо, долго искал решение и случайно заметил. 
Теперь весь сайт https

Share this post


Link to post
Share on other sites
3 минуты назад, vladrein сказал:

Огромное Вам спасибо, долго искал решение и случайно заметил. 
Теперь весь сайт https

Это довольно плохое решение сразу по многим причинам!

Такое надо делать через редирект в .htaccess.

  • +1 1

Share this post


Link to post
Share on other sites
1 час назад, Dotrox сказал:

Это довольно плохое решение сразу по многим причинам!

Такое надо делать через редирект в .htaccess.

Благодарю за совет.
Воспользовался вашими рекомендациями по редактированию .htaccess.
Вроде аналогично помогло, не пойму чем отличается, но прислушаюсь к Вам.
Спасибо.

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

 

Share this post


Link to post
Share on other sites
2 часа назад, vladrein сказал:

не пойму чем отличается

В более общем плане - редирект средствами веб-сервера (nginx/Apache) работает быстрее и с меньшим потреблением ресурсов, поскольку нет необходимости запускать процесс php и выполнять какой-либо код.

Но конкретно в этом случае имеем просто кладезь того, как делать не надо:

$_SERVER['HTTPS'] - может содержать какое угодно значение в зависимости от конкретного веб-сервера и его настроек, например, там может быть "off" и в результате такой редирект не сработает, потому что проверяется только наличие, но не значение индекса.

$_SERVER['SCRIPT_URL'] - очень часто не существует, в результате всё будет редиректить на главную страницу.

  • +1 1

Share this post


Link to post
Share on other sites
В 01.04.2017 в 21:31, Dotrox сказал:

Вот правильный .htaccess:


Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Редиректы ОК для сайтмапа и т.д.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

 

Уважаемый, Dotrox! Столько уже правильных .htaccess на разных форумах надыбал, в том числе и ваших примеров, что совсем запутался и не знаю на каком из правильных стоит остановиться.

Вот здесь вообще в топике темы приводится 6 вариантов один лучше другого и даны рекомендации пробовать все начиная с первого какой подойдёт.

 

По непонимаю выбрал первый вариант:

редирект с "с www" на "без www"

находим строку RewriteEngine On
Со следующей строки добавляем:
- для переадресации с www.site.ru на site.ru:
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]

RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

 

редирект с http на https

Сразу после строки с 'RewriteBase /'. Если не работает, попробуйте поставить выше, сразу после строки с  'RewriteEngine On'. (вставил после RewriteBase, вроде работает, но не понял почему нельзя сразу один за другим редиректы вставить после RewriteEngine On и как то сразу прописать на https без www)

RewriteCond %{HTTPS} off

RewriteCond %{HTTP_HOST} ^(www\.)?(osnovnoy_domen\.ru)

RewriteRule ^ https://%2%{REQUEST_URI} [R=301,L]

 

Вроде как сайт работает, правда с установленным модулем HTTPS Fix

 (поставил раньше, чем прочитал вашу рекомендацию по поводу правки в /system/library/url.php , а при попытке удаления модуля сайт сразу посыпался и куча ошибок полезла, установил снова и все норм).

 

Но хочется применять действительно правильные решения, а не первые попавшиеся. А тут я ещё вижу в вашем примере и Редиректы ОК для сайтмапа и т.д. прописаны.

 

Не могли бы вы привести в качестве примера универсальный на ваш взгляд  .htaccess, не кусками, а полностью.

А если бы ещё такой же универсальный robots.txt, то вообще бы замечательно было. Просто по robots.txt тоже рекомендаций много, сложно новичку сориентироваться в многообразии советов.

 

У меня сайт на ocStore 2.1.0.2.1 и виртуальном хостинге Beget (если это имеет значение).

 

Кстати, что вы думаете на счёт:

 

P.P.S. Остался один вопрос - Вопрос №1, нужно ли добавлять строчку "define('HTTPS_IMAGE', 'https://site.ru/image/');" или нет? - это с того же форума, что по ссылке выше.

 

Это по этому у меня картинки товаров отдаются браузером по всем 4-м вариантам: с www, без www, http и https, хотя если скопировать ссылку на фото, то она имеет вид https://site.ru

Это нормально или с этим тоже что-то надо делать?

 

Edited by Paint

Share this post


Link to post
Share on other sites
22 минуты назад, Paint сказал:

Не могли бы вы привести в качестве примера универсальный на ваш взгляд  .htaccess, не кусками, а полностью.

Тот, который вы процитировали, можно считать стандартным шаблоном.

 

Совсем универсальный не получится, потому что определение https зависит от конкретного сервера. Если с такой строкой у вас редирект не работает:

RewriteCond %{SERVER_PORT} !^443$

можно заменить её на такой вариант:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https

 

А содержимое вот здесь:

# Редиректы ОК для сайтмапа и т.д.

полностью зависит от вашей версии ОК и используемых модулей. В вашем дефолтном .htaccess здесь всё уже должно быть правильно (в контексте версии, а в контексте модулей - зависит от вас).

 

Плюс сюда же вписываются редиректы, например, если вам нужно какие-то страницы перенаправить на другой адрес.

 

37 минут назад, Paint сказал:

при попытке удаления модуля сайт сразу посыпался и куча ошибок полезла

Какой хороший модуль :-D

 

38 минут назад, Paint сказал:

нужно ли добавлять строчку "define('HTTPS_IMAGE', 'https://site.ru/image/');"

Добавлять нужно, но работать оно будет в лучшем случае наполовину, так что для полного перевода всех изображений на https надо и в HTTP_IMAGE тоже прописать ссылку с https, ибо множество модулей не подозревают о существовании HTTPS_IMAGE и даже в самом ОК не во всех версиях с этим всё нормально.

 

 

42 минуты назад, Paint сказал:

Это по этому у меня картинки товаров отдаются браузером по всем 4-м вариантам: с www, без www, http и https, хотя если скопировать ссылку на фото, то она имеет вид https://site.ru

Это нормально или с этим тоже что-то надо делать?

Это не особо нормально, но ничего вы с этим сделать не сможете: за статику отвечает nginx и редиректы надо прописывать в его конфиге, чтоб здесь всё открывалось по правильным ссылкам, но на шареде у вас нет доступа к конфигам nginx. Можете попросить хостера это сделать. Только либо просите его поставить редиректы исключительно на статику, либо уберите редиректы из .htaccess (и этот вариант будет лучше).

 

 

 

Share this post


Link to post
Share on other sites
25 минут назад, Dotrox сказал:

либо уберите редиректы из .htaccess (и этот вариант будет лучше).

 

 

 

Это как?

Share this post


Link to post
Share on other sites
3 часа назад, Paint сказал:

Это как?

Ну, если хостер пропишет все редиректы в конфиге nginx, то в .htaccess они будут не нужны и даже опасны.

  • +1 1

Share this post


Link to post
Share on other sites
В 22.03.2017 в 19:33, Dotrox сказал:

 

Нет. Заменить нужно только в первой строчке, то есть здесь:


public function link($route, $args = '', $connection = 'NONSSL') {

 

 

Добрый день. Прошу помощи. Заказал  SSL сертификат, установили.

Теперь занимаюсь настройкой. Не получается, не обрабатываются стили. Делал так:

1. В /config.php и /admin/config.php изменил в строки

/ HTTPS
define('HTTPS_SERVER', 'https://****');
define('HTTPS_IMAGE', 'https://****');

 

// HTTPS
define('HTTPS_SERVER', 'https://****');
define('HTTPS_CATALOG', 'https://****');
define('HTTPS_IMAGE', 'https://****');

 

2. Исправил строку в \system\library\url.php  

public function link($route, $args = '', $connection = 'SSL') {

 

3. Включил в админке "Использовать SSL" 

 

4. в /.htaccess пробовал все 3 варианта(этb варианты из статьи на сайте тех.поддержки хостинга)

вариант 1
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

 

вариант 2

RewriteEngine On

RewriteCond %{HTTPS} =on

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

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

 

Итого: страница открывается по https, стили не обрабатываются, в консоли разработчика хром указан протокол http:

59502c50167e4_Image1.png.3f80b3a702fb7d20beb82acb9e375b60.png

 

Подскажите, пжл, где я ошибся или что я пропустил?

Share this post


Link to post
Share on other sites
1 час назад, horsestealer11 сказал:

где я ошибся или что я пропустил?

Вы могли и ничего не пропустить, а просто кривой сервер и не менее кривой ОК не смогли найти общий язык.

 

В /catalog/controller/common/header.php перед установкой значения для base есть проверка на HTTPS и там есть вот такое условие (среди прочего):

$this->request->server['HTTPS'] == 'on'

 

Так вот, реально значение server['HTTPS'] может быть не "on", а "On" и в результате ОК не понимает, что используется HTTPS.

 

Решение простое: обернуть $this->request->server['HTTPS'] в strtolower (что и должно было бы быть изначально), но проблема в том, что такое условие есть не только здесь, например, мне сразу в голову приходит модель изображений. файлменеджер в админке (да и сама шапка админки), система ЧПУ. То есть, если дело именно в этом, то придётся облазить ещё кучу файлов, чтоб всё поправить.

Более простое решение - просто прописать в конфигах везде https, чтоб оно использовалось независимо от того, насколько ОК кривой.

Share this post


Link to post
Share on other sites
7 часов назад, Dotrox сказал:

Вы могли и ничего не пропустить, а просто кривой сервер и не менее кривой ОК не смогли найти общий язык.

 

В /catalog/controller/common/header.php перед установкой значения для base есть проверка на HTTPS и там есть вот такое условие (среди прочего):


$this->request->server['HTTPS'] == 'on'

 

Так вот, реально значение server['HTTPS'] может быть не "on", а "On" и в результате ОК не понимает, что используется HTTPS.

 

Решение простое: обернуть $this->request->server['HTTPS'] в strtolower (что и должно было бы быть изначально), но проблема в том, что такое условие есть не только здесь, например, мне сразу в голову приходит модель изображений. файлменеджер в админке (да и сама шапка админки), система ЧПУ. То есть, если дело именно в этом, то придётся облазить ещё кучу файлов, чтоб всё поправить.

Более простое решение - просто прописать в конфигах везде https, чтоб оно использовалось независимо от того, насколько ОК кривой.

Значение переменной $_SERVER['HTTPS'] пустое. А где оно вообще заполняется?

 

Попробую в config везде поставить https

 

Share this post


Link to post
Share on other sites
6 часов назад, horsestealer11 сказал:

Значение переменной $_SERVER['HTTPS'] пустое. А где оно вообще заполняется?

Значит сервер оказался ещё кривее, чем предполагалось. Пинайте хостера.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.