После долгих раздумий о целесообразности и выгоды для сайта, которую принесет переход на SSL протокол вместо стандартного HTTP без шифрования, я все таки решил перевести один ресурс на зашифрованное соединение с сервером. Поводом было хорошее ранжирование в Google и доверие Яндекса. Насколько это оправдало себя покажет время.

И так, сертификат куплен, установлен, сервер настроен. Теперь надо все запросы перенаправить на https. Вроде проблем никаких не должно возникнуть с редиректом в .htaccess. Но! Если у вас работает сервер под управлением ISPManager в связке с Nginx и Apache то вы получите цикличные перенаправления.

Смотрим пример:
 
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
Читаем документацию, Google в помощь и приводим правила к следующему виду:
 
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
Мы добавили просто одну строку в существующее правило redirect
 
RewriteCond %{HTTP:X-Forwarded-Proto} !https
 
И напоследок исключаем из правила редиректа файл robots.txt, иначе в панели вебмастера Яндекса вы увидите Сервер отвечает редиректом на запрос /robots.txt
 
<FilesMatch "robots.txt$"> 
RewriteEngine off 
</FilesMatch>
 
На этом вопрос решен, сервер отдает правильный заголовок:
 
HTTP/1.1 301 Moved Permanently
Server: nginx/1.8.0
Date: Tue, 06 Dec 2016 08:09:33 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Location: https://art-apple.ru/
Vary: Accept-Encoding
Strict-Transport-Security: max-age=15768000
 
HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Tue, 06 Dec 2016 08:09:36 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
X-Powered-By: PHP/5.3.10
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Strict-Transport-Security: max-age=15768000
 

Добавить комментарий