1

Тема: Принудительное шифрование в админ-панели

Подключил константу

define('S2_FORCE_ADMIN_HTTPS', 1);

Админ-панель работает. Проблема в том, что после первого её посещения в шифрованном виде https начинает работать и на всём остальном сайте. Помогает очистка кэша. Притом если её не сделать, то в Хроме с сайта пропадают стили. В ФФ же стили на месте. https хочется оставить исключительно для админки.

2

Re: Принудительное шифрование в админ-панели

Вообще всё запрограммировано работать именно так, как вы описали. Очистка кеша не должна влиять на https в админке (кстати, речь о браузерном кеше или папке _cache?).

Скопируйте всё содержимое файла config.php, кроме паролей.

3

Re: Принудительное шифрование в админ-панели

Роман пишет:

Вообще всё запрограммировано работать именно так, как вы описали. Очистка кеша не должна влиять на https в админке (кстати, речь о браузерном кеше или папке _cache?).

Скопируйте всё содержимое файла config.php, кроме паролей.

Речь о браузерном кеше. https должен работать только в админке или на самом сайте? Повторюсь: при включении константы «define('S2_FORCE_ADMIN_HTTPS', 1);» я захожу на основной домен и вижу там https. То есть константа включается не только для админ-панели, но и для всего сайта (надо полагать, локально). Разве так было запрограммировано? Можно как-то размежевать протоколы без очистки кеша: http — для сайта, https — для админ-панели? Спасибо.

<?php

$db_type = 'mysqli';
$db_host = 'localhost';
$db_name = '';
$db_username = '';
$db_password = '';
$db_prefix = '';
$p_connect = false;

define('S2_BASE_URL', '');
define('S2_PATH', '');
define('S2_URL_PREFIX', '');
define('S2_FORCE_ADMIN_HTTPS', 1);

$s2_cookie_name = 's2_cookie_1229856771';

24.03.2013 10:12:33. Текст был изменен (khaydarov).

4

Re: Принудительное шифрование в админ-панели

Принудительный переход (редирект) с протокола http на https происходит только в админке, если определена константа S2_FORCE_ADMIN_HTTPS. Сам сайт будет отображаться по запрошенному протоколу (либо http, либо https). Я не думаю, что это нужно как-то специально ограничивать.

Мне кажется, ваш браузер запоминает, по какому протоколу вы заходили на страницы сайта последний раз, и использует его при следующих посещениях. Попробуйте проверить в другом браузере, в котором вы никогда не использовали https.

Еще пропишите адрес сайта в S2_BASE_URL (например, 'http://s2cms.ru').

5

Re: Принудительное шифрование в админ-панели

Роман пишет:

Сам сайт будет отображаться по запрошенному протоколу (либо http, либо https). Я не думаю, что это нужно как-то специально ограничивать.

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

Роман пишет:

Еще пропишите адрес сайта в S2_BASE_URL (например, 'http://s2cms.ru').

Уже было прописано.

24.03.2013 18:22:26. Текст был изменен (khaydarov).

6

Re: Принудительное шифрование в админ-панели

Так это не проблема собственно движка. Даже если вы разместите статические файлы со сгенерированным html, все проблемы останутся. (Такие проблемы могли быть в старых версиях стиля по умолчанию, но года два назад я их исправил.)

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

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="/js/my_script.js"></script>

С другой стороны, если на сайте не нужен https, то в веб-сервере настраивается перенаправление для обычных страниц сайта. Вот пример для htaccess:

RewriteEngine On

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

В предпоследней строчке указывается папка, к которой должен быть доступ по обоим протоколам (можно повторить строчку несколько раз). Так же системные адреса, начинающиеся с подчеркивания, тоже игнорируются в этом перенаправлении.

7

Re: Принудительное шифрование в админ-панели

Попробовал последний вариант. Добавил указанный вами код в .htaccess. Страница с админкой доступна, а на всех остальных страницах происходит циклическая переадресация. .htaccess у меня следующего вида:

# BEGIN S2

<IfModule mod_rewrite.c>
# MultiViews interfers with proper rewriting
Options +FollowSymlinks -MultiViews

RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.com
RewriteRule (.*) http://www.site.com/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/_
RewriteCond %{REQUEST_URI} !^/admin
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Uncomment and properly set the RewriteBase if the rewrite rules are not working properly
#RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

# END S2


<Files *>
Header set Cache-Control: "private, pre-check=0, post-check=0, max-age=0"
Header set Expires: 0
Header set Pragma: no-cache
</Files>

Подскажите, пожалуйста, почему эта конструкция не работает. К сожалению, я в этом полный профан.

8

Re: Принудительное шифрование в админ-панели

У меня не заработала последняя секция <Files *>. Без нее всё заработало.

Попробуйте прописать второе правило тоже с явно указанным доменом:

RewriteRule (.*) http://www.site.com%{REQUEST_URI} [R=301,L]

А вообще загляните в лог ошибок веб-сервера, там будет сообщение об ошибке.