Skip to main content
создание сайта под ключ
×

Обсудить проект

Заполните форму, наш специалист свяжется с вами для консультации (бесплатно), составит для вас персональное предложение. Или звоните: +7(916) 107-51-99 (10.00–18.00, Мск.)

Как к вам обращаться?
Сообщите корректный адрес электронной почты.
Заполните поле, опишите суть задачи.
Необходимо подтвердить согласие с Политикой.

Настройка Joomla! 3.x для работы по протоколу https

Перевод сайта для работы по протоколу https можно реализовать многими путями. Мои личные предпочтения: подключение к сервису cloudflare.com по многим и разным причинам.

Сам процесс «подключения» пропустим. Суть данного материала — не забыть манипуляции, которые нужно произвести с сайтом на cms Joomla! 3.x после обновления DNS у регистратора и настройки cloudflare.com

Поправка: для разных хостеров перечень «мероприятий» разный, мои сайты (в основном) находятся на valuehost.ru Для иных хостеров порядок и методы могут быть иными.

Порядок «мероприятий»

1. Правим файл uri.php

Для joomla! 3.4 и 3.5 — файл находится /libraries/joomla/uri/uri.php (можно поискать кусок кода (указанный ниже) в total commayder). А лучше, все же, обновить версию cms до новой стабильной версии.

Для joomla! 3.8 — файл находится /libraries/src/uri/uri.php

Исправить в коде, было

if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off'))
{
$https = 's://';
}
else
{
$https = '://';
}

Стало

if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off'))
{
$https = 's://';
}
else
{
$https = 's://';
}

Разница в символе s в предпоследней строке кода.

2. Правка .htaccess Чтобы особо «не париться» процитируем тупо кусок обязательного кода (имеющееся содержимое файла можно стереть полностью).

<IfModule autoindex>
   IndexIgnore *
</IfModule>
Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteRule ^(abc/def|ghi)(.*)/?$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,NC,L]

RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]

   RewriteBase /
   RewriteCond %{HTTP_HOST} ^www\.novogireevo-kursy\.ru$ [NC]
   RewriteRule ^(.*)$ http://novogireevo-kursy.ru/$1 [R=301,L]
   RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
   RewriteRule ^index\.php$ http://novogireevo-kursy.ru/ [R=301,L]

   RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
   RewriteCond %{REQUEST_URI} !^/index\.php
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule .* index.php [L]
</IfModule>

Понятно, что в коде нужно изменить имя домена novogireevo-kursy на реально нужное в конкретном случае.

Понятно, что приведенный выше код организует переадресацию зеркал:

Сайт с www на без www и «склеивает» index.php

3. В файле configuration.php прописать url сайта (примерно 20-я строка):

public $live_site = 'https://novogireevo-kursy.ru';

Опять-таки, имя сайта поменять на нужное.

4. В robots.txt прописать Host с https, изменить url в sitemap (если сайт действующий, старый).

Host: https://novogireevo-kursy.ru
Sitemap: https://novogireevo-kursy.ru/Sitemap.xml

Вроде бы и всё. Обычно этого достаточно, хотя и не всегда. В последней версии (v.3.8.11) сайт работает и без правки по п.1 Не знаю почему и... не хочу знать.