Итак, возникла логическая проблема, которая вызвала зацикливание внутри правил.
Так что попробуйте это исправить:
# rewrite non https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# if https but without www
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
давайте проанализируем 1-ю ситуацию:
http://www.example.org%{REQUEST_URI}
будет обработано первым правилом (https off), которое будет перенаправлено с версией https:
https://www.example.org%{REQUEST_URI}
давайте проанализируем 2-ю ситуацию:
http://example.org%{REQUEST_URI}
будет обработано первым правилом (https off), который будет перенаправлен с версией https:
https://example.org%{REQUEST_URI}
и после быть обработан вторым правилом, которое добавит www. в качестве префикса:
https://www.example.org%{REQUEST_URI}