Перейти к содержанию
Официальный форум поддержки Simpla

<base href="{$config->root_url}/"/>


Рекомендуемые сообщения

Скажите, как через переопределить значение отдающее сервером в шаблонах
<base href="{$config->root_url}/"/>

Проблема с httpS. Хостинг отдаёт значение {$config->root_url} вида http://site.ru ,
мне необходимо сделать https://site.ru

Как?

Ссылка на сообщение
Поделиться на другие сайты

у вас в корневом .htaccess установлено правило для ssl? чтобы пользователь заходя через http перенаправлялся на защищенное соединение?

Ссылка на сообщение
Поделиться на другие сайты

у вас в корневом .htaccess установлено правило для ssl? чтобы пользователь заходя через http перенаправлялся на защищенное соединение?

Правило, конечно же, установлено, что и удивляет.. При переходе по ссылке https://site.ru всё равно отдаёт в шаблон http://site.ru

Ссылка на сообщение
Поделиться на другие сайты

Правило, конечно же, установлено, что и удивляет.. При переходе по ссылке https://site.ru всё равно отдаёт в шаблон http://site.ru

 

установите принудительно https, в api/Config.php удалите или лучше закомментируйте

$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http';
	if($_SERVER["SERVER_PORT"] == 443)

чтобы остался только

$protocol = 'https';
Ссылка на сообщение
Поделиться на другие сайты

 

установите принудительно https, в api/Config.php удалите или лучше закомментируйте

$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http';
	if($_SERVER["SERVER_PORT"] == 443)

чтобы остался только

$protocol = 'https';

Благодарен за оперативный ответ. Всё работает! Большое спасибо!

Ссылка на сообщение
Поделиться на другие сайты

 

установите принудительно https, в api/Config.php удалите или лучше закомментируйте

$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http';
	if($_SERVER["SERVER_PORT"] == 443)

чтобы остался только

$protocol = 'https';

Михаил, а сталкивался с проблемой, когда на хостинге галочка "Использовать безопасное соединение SSL прожата, редирект каталогов работает, а файлов нет."

 

http://site.ru/direct переадресовывает на https://site.ru/direct

а http://site.ru/direct.JPG НЕ переадресовывает на https://site.ru/direct.JPG

Ссылка на сообщение
Поделиться на другие сайты

Михаил, а сталкивался с проблемой, когда на хостинге галочка "Использовать безопасное соединение SSL прожата, редирект каталогов работает, а файлов нет."

 

http://site.ru/direct переадресовывает на https://site.ru/direct

а http://site.ru/direct.JPG НЕ переадресовывает на https://site.ru/direct.JPG

 

вообще должны быть, в настройках там отдает $this->config->root_url, что должно отдавать https

Ссылка на сообщение
Поделиться на другие сайты

вообще должны быть, в настройках там отдает $this->config->root_url, что должно отдавать https

Не пойму. То есть то же можно через API принудительно сделать? Буду пробовать.

Ссылка на сообщение
Поделиться на другие сайты

Не пойму. То есть то же можно через API принудительно сделать? Буду пробовать.

 

туда уже передается юрл с вашим $protocol = 'https'; это что-то другое

Ссылка на сообщение
Поделиться на другие сайты

туда уже передается юрл с вашим $protocol = 'https'; это что-то другое

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

Ссылка на сообщение
Поделиться на другие сайты

Скорее всего стоит у Вас Nginx в качестве отдачи статики, а редирект для апача делаете. 
 

		// Протокол
		$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http';
		if($_SERVER["SERVER_PORT"] == 443)
			$protocol = 'https';
		elseif (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1')))
			$protocol = 'https';
		elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on')
			$protocol = 'https';

		$this->vars['protocol'] = $protocol;

ето должно профиксить в вашем случае и в большинстве других. ето что касается автоматического определение протокола. 
Что касается же редиректа то тут все сложнее, настоятельно рекомендую сначала написать в сапорт, может какой то костыль Вам предложат на опыте (по своему хостингу)

Ссылка на сообщение
Поделиться на другие сайты

Скорее всего стоит у Вас Nginx в качестве отдачи статики, а редирект для апача делаете. 

 

		// Протокол
		$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http';
		if($_SERVER["SERVER_PORT"] == 443)
			$protocol = 'https';
		elseif (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1')))
			$protocol = 'https';
		elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on')
			$protocol = 'https';

		$this->vars['protocol'] = $protocol;

ето должно профиксить в вашем случае и в большинстве других. ето что касается автоматического определение протокола. 

Что касается же редиректа то тут все сложнее, настоятельно рекомендую сначала написать в сапорт, может какой то костыль Вам предложат на опыте (по своему хостингу)

Все так и оказалось. Спасибо.

Ссылка на сообщение
Поделиться на другие сайты

Столкнулся с подобной проблемой, может подскажете?

 

В общем ситуация такая - есть сайт, для приема платежей недавно установили SSL-сертификат. 

Требования - чтобы сайт был доступен и по HTTP и по HTTPS, т.к. сайт давно проиндексирован и имеет не плохие позиции в поиске, и мы не хотим отказываться от http версии,  и в тоже время нужна https версия для приема платежей через яндекс кассу для юрлиц.

 

Т.е. если человек заходит на http версию и начинает переходить по ссылкам на сайте - надо чтобы он и остался на ней, и наоборот, если человек заходит на https версию и начинает переходить по ссылкам, он также и остается на https страницах.

 

Версия simpla 2.2.4

Если не вносить никаких изменений в файл /api/Config.php,  то получается что http версия работает без проблем, а https версия не работает как надо, не подгружаются стили, скрипты, так как к ним адрес автоматически прописывается не через https а через http  :( 

Браузер ругается, что на странице обнаружен небезопасный контент.

 

Пробовал сделать так - удалить с файла /api/Config.php следующие строки:

$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http';
if($_SERVER["SERVER_PORT"] == 443)

и оставить только 

$protocol = 'https';

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

Ссылка на сообщение
Поделиться на другие сайты

Нафига?

Работать сайт будет только на защищенном HTTPS, старый вес страниц не потеряется, а в скриптах нужно будет путь подправить, чтобы тоже https брал и всё.

Ссылка на сообщение
Поделиться на другие сайты

Нужно проверить подключение скриптов и стилей. внешние скрипты, например jquery может подключаться извне - в самом подключении нужно поменять протокол с http на https.

так же можно проделать манипуляции, описанные товарищем osben для того, чтобы нормально прогружались локальные стили и скрипты.

Так же поддержу Kniazdiit - если уж раскошелились на сертификат, то используйте для просмотра вашего сайта протокол https - не зря их все таки придумывали. редирект с незащищенного протокола на защищенный не нанесет раскрутке существенного вреда, однако нужно проследить, чтобы сайт отображался корректно - на это поисковики нынче смотрят

 

Ссылка на сообщение
Поделиться на другие сайты

Нужно проверить подключение скриптов и стилей. внешние скрипты, например jquery может подключаться извне - в самом подключении нужно поменять протокол с http на https.

 

так же можно проделать манипуляции, описанные товарищем osben для того, чтобы нормально прогружались локальные стили и скрипты.

 

все скрипты и стили подключены локально.

 

Заметил одну особенность Если в этом коде (config.php) всё убрать:

 

// Протокол
		$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http';
		if($_SERVER["SERVER_PORT"] == 443)
			$protocol = 'https';

		$this->vars['protocol'] = $protocol;		
		$this->vars['root_url'] = $protocol.'://'.rtrim($_SERVER['HTTP_HOST']);
		if(!empty($subdir))
			$this->vars['root_url'] .= '/'.$subdir;

и оставить только первую строчку:

// Протокол
	$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http';

То всё работает как мне нужно - полноценно работает версия с https и http, и вроде бы всё хорошо, но пропадает переменная 

 

root_url 

Я заметил что она используется в шаблоне в нескольких местах, например в шаблоне e-mail письма покупателю:

Вы всегда можете проверить состояние заказа по ссылке:<br>
<a href="{$config->root_url}/order/{$order->url}">{$config->root_url}/order/{$order->url}</a>

Здесь я могу жестко прописать адрес сайта и проблем не будет. Также синий ярлычок переключения между админкой и сайтом перестал работать.

 

Судя по коду выше нужно как-то по-другому написать переменную $protocol и всё должно заработать, но может я ошибаюсь. Может что-нибудь предложите? 

Ссылка на сообщение
Поделиться на другие сайты

пробовал, не помогает, http работает нормально, https - не грузит стили и скрипты, т.к. адрес их прописывется через http

Ссылка на сообщение
Поделиться на другие сайты

просто не хочется полностью переводить сайт на https.

 

получается, в этом коде:

	$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http';
		if($_SERVER["SERVER_PORT"] == 443)
			$protocol = 'https';

	$this->vars['protocol'] = $protocol;		
	$this->vars['root_url'] = $protocol.'://'.rtrim($_SERVER['HTTP_HOST']);
	if(!empty($subdir))
		$this->vars['root_url'] .= '/'.$subdir;

если оставить только первую строчку - всё работает как мне нужно, но теряется root_url.

Жаль что я в php ничего не смыслю, но если сделать так? 

Например 

1) Узнаем SERVER_PROTOCOL, - если он = https - переменной $protocol присваеваем https,

если он = http - переменной $protocol присваеваем http,

Ну и потом подставляем её в root_url

Может конечно я пургу несу, но всё же

Изменено пользователем simpler
Ссылка на сообщение
Поделиться на другие сайты

Всем откликнувшимся большое спасибо!

 

Проблема решилась сама собой.

Сам сглупил, в общем для приема платежей яндексом нужен доступ по https только к файлу:

https://sitename.ru/payment/YandexMoney/callback.php

а с ним проблем нет, он нормально по https работает со стандартными настройками.

 

Единственное - осталось закрыть от индексации не красивую версию https.

Пробовал создавать второй файл robots-https.txt и через htaccess писать 

RewriteEngine on

RewriteCond %{HTTPS} on
RewriteRule ^robots\.txt$ robots-https.txt

 

Не помогает, игнорируется {HTTPS}

 

т.е. если зайти по адресу:

https://sitename.ru/robots.txt

 

показывает обычный robots.txt, а не перебрасывает на robots-https.txt

Изменено пользователем simpler
Ссылка на сообщение
Поделиться на другие сайты

можно сделать редирект с https на http кроме папочки payment

 

согласен, хорошее решение! не подскажите как это прописать в htaccess?

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...