Ваши условия неявно AND'd и ваше второе условие всегда будет истинным (если у вас нет других доменов), поэтому ваши текущие правила будут перенаправлять только трафик не-SSL.
Вам необходимо выполнить OR
условия и отменить www
(второе) условие:
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443 [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
Если значение SERVER_PORT
не равно 443 (т. Е. Не HTTPS) или хост не запускается www.
(т. Е. Вы обращаетесь к пустому домену), тогда перенаправьте на канонический URL-адрес.
Однако будет ли перенаправление https://example.com
на https://www.example.com
это, зависит от вашего сертификата безопасности. (Ваш сайт должен быть доступен как через www, так и без www через SSL для перенаправления .htaccess.)
http://example.com
(т. Е. HTTP и без www), поскольку сначала оно будет перенаправлено на HTTPS на том же хосте (т. Е. Безwww
), а затем перенаправленоwww
в качестве второго перенаправления. Вы можете исправить это, просто изменив эти два правила.