Перейти до основного вмісту
Налаштування https на Drupal 7

Переїзд сайтів на новий протокол https - це вже не чергова seo фішка, а необхідність, до якої рано чи пізно доведеться прийти всім сайтам. У цій статті ми не будемо розглядати, що таке https і навіщо він потрібен, які види сертифікатів існують і як їх замовляти, я лише розповім як правильно перевезти на цей протокол сайт, що працює на CMS Drupal 7.

Для низки своїх сайтів я використовував безкоштовні сертифікати від Let's Encrypt хостингів, що пропонуються в панелі інструментів (додаткових послуг). Якщо у вас інформаційний сайт або інтернет-магазин де не проводяться онлайн платежі, то такого сертифіката буде достатньо.

Після того, як сертифікат був замовлений і випущений для вашого домену (як це зробити не описую так як у кожного хостингу своя процедура) обов'язково переконайтеся, що сайт доступний за двома адресами, з http:// і https://. Якщо все гаразд, йдемо до наступного кроку.

Важливо! Поки не поспішаємо вносити правки в htacess і налаштовувати 301 редіректи. Перше, що необхідно зробити це:

  1. Придбати та налаштувати сертифікат безпеки, який видається відповідною уповноваженою організацією (центром сертифікації).
  2. Повідомити пошуковому роботу про те, що сайт став доступним за новим протоколом, додавши його до форми addurl або до списку своїх сайтів в Яндекс.Вебмайстрі.
  3. Якщо домени http та https були визнані дзеркалами раніше, то на даному етапі можна повідомити роботу про зміни щодо головного дзеркала на сторінці «Налаштування індексування — Головне дзеркало» сервісу Яндекс.Вебмайстер. Якщо цього ще не сталося, цей крок потрібно пропустити, оскільки сервіс не дозволить здійснити цю операцію. 
  4. Дочекатися, поки головне дзеркало в групі дзеркал сайту буде визначено відповідно до заданих вказівок, це може тривати кілька тижнів. Як тільки це станеться, ви побачите відповідні зміни для підтвердженого сайту в Яндекс.Вебмайстрі.
  5. При необхідності налаштувати редірект з не головного дзеркала на головне. Робити це до того, як сайти будуть визнані дзеркалами, небажано, оскільки в цьому випадку сторінки з редіректами виключатимуться з пошуку відповідно до правил Яндекса з обробки перенаправлень. На час склеювання дзеркал, по можливості, краще залишити сайт доступним для робота на обох адресах.

Робиться це для того, щоб мінімізувати втрати трафіку при зміні протоколу, оскільки якщо відразу ставити 301 редірект, то сторінки можуть вилітати з пошуку ще до того, як нові туди потраплять.

Налаштовуємо 301 Redirect

Тепер, коли дзеркала в Яндексі склеїлися, вносимо редагування у файл .htaccess. Після рядка:

RewriteEngine On

додаємо:

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

Але не на всіх хостингах такий варіант буде робітником. Наприклад, цей варіант робітник на хостингу Timeweb, але не працює на Beget. Для Beget виявився робітником такий:

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

Для Ukraine ж чомусь не пішли обидва попередні варіанти, тому в моєму випадку довелося використати такий:

RewriteBase /
RewriteCond %{HTTP:SSL} !=1 [NC]
RewriteRule ^(.*) https://вашсайт.net/$1 [L,R=301]

Також, на деяких хостингах можуть не підвантажуватись CSS стилі, скрипти та картинки. Для виправлення цієї проблеми йдемо у файл:

/sites/default/setting.php 

знаходимо і розкоментуємо (прибрати #) директиву $base_url, (десь 283 трока), вписавши туди замість сайту приклад домен вашого сайту з протоколом https.

$base_url = 'https://вашдомен.org';  

Раджу $base_url відкоригувати незалежно чи підключилися стилі та скрипти чи ні.

Описаний вище метод гарний тим, що не вимагає встановлення додаткових друпалівських модулів таких як Secure Pages наприклад .

Також, багато хостингів радять купувати виділений IP для сайту, що працює на https, але якщо вам не важливий трафік із застарілих браузерів - не купуйте. Список браузерів, які не підтримують з якими можуть бути проблеми без виділеного IP, можна переглянути тут.

Правила вказані у файлі .htaccess універсальні, і загалом можуть працювати та використовуватися на інших CMS. Важливо! Після виконаних маніпуляцій перевірити відповідь сервера через будь-який сервіс, наприклад, цей. Сайт з робочим протоколом https повинен віддавати 200 код, решта варіантів 301. На прикладі мого сайту:

https://seonomad.net - HTTP/1.1 200 ОК
https://www.seonomad.net - HTTP/1.1 301 Moved Permanently
http://seonomad.net - HTTP/1.1 301 Moved Permanently
www.seonomad.net - HTTP/1.1 301 Moved Permanently

На хостингу Таймвеб у мене була ситуація, коли все зроблено як описано вище, але код відповіді віддавався не 301, а 302.

panel_upravleniya_hostingom_taymveb_2016-12-09_13-33-20.png

По дебільному якось. Спочатку потрібно включити галочку "Використовувати безпечне з'єднання", а потім, коли сертифікат буде випущений, відключити її.