сертификат должен охватывать как WWW и без WWW по протоколу HTTPS. Некоторые сертификаты поставщика охватывают как для www.xxxx.yyy, так и только для xxxx.yyy.
Включите переписывает:
RewriteEngine On
сделать все использование HTTP https:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://xxx.yyy/$1 [L,R=301]
только сделать WWW HTTPS использовать не-WWW https:
RewriteCond %{SERVER_PORT} 443
RewriteCond %{HTTP_HOST} ^www[.].+$
RewriteRule ^(.*)$ https://xxxx.yyy/$1 [L,R=301]
Не может быть обработка не -www https, в противном случае возникает цикл.
В [L, R = 301]:
- L = Если правило было обработано, не обрабатывает больше.
- R = 301 = Сообщает обозревателю/роботу о постоянной переадресации.
Более общий
Более общий подход - не порть-зависимый - это:
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ https://xxxx.yyy/$1 [R=301,QSA]
сделать любой URL с www
уронить его.
RewriteCond %{HTTPS} !on
RewriteCond %{HTTPS} !1
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteRule ^(.*)$ https://xxxx.yyy/$1 [R=301,QSA]
, чтобы заставить любой не-HTTPS URL, даже для тех, кто системы вниз по течению от багажных балансиров, что падение по протоколу HTTPS, использует протокол HTTPS.
Обратите внимание, что я не тестировал опции forwarded
, так что по достоинству оцените отзывы о любых проблемах с ними.Эти линии могут быть опущены, если ваша система не находится за балансировщиком нагрузки.
К HTTP_HOST или не
Вы можете использовать ${HTTP_HOST}
быть частью URL в RewriteRule
, или вы можете использовать явное канонический текст доменных имен (xxxx.yyy
выше).
Задание имени домена явно гарантирует, что в предоставленном пользователем URL-адресе не используются никакие незначительные средства изгибания символов, чтобы, возможно, обмануть ваш сайт, чтобы сделать что-то, на чем он не может быть подготовлен, или, по крайней мере, гарантирует, что правильное имя домена появляется в адресной строке, независимо от того, какая строка URL открыла страницу.
Это может даже помочь преобразовать домены с кодированием в режиме punycode, чтобы показать правильные символы Юникода в адресной строке.
Отметить правильный ответ уже! –