я пытаюсь перенаправить мои URL-адреса на https. Я хотел бы сделать следующее:
http://example.com => https://example.com
http://www.example.com => https://example.com
www.example.com => https://example.com
example.com => https://example.com
Так что конвертируйте каждый URL в https://example.com (С удалением www)!
Мой текущий .htaccess выглядит так:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^example.com [NC]
RewriteRule ^(.*)$ https://example.com /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.gif|\.jpg|\.png|\.ogg|\.wav|\.mp3|\.mp4|\.zip|\.pdf|\.fav|\.rar|\.doc)$ [NC]
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]
Я пытался добавить
RewriteCond %{HTTPS} off [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
после и до первого RewriteRule, но это приводит к бесконечному циклу.
Кто-нибудь может мне помочь?
Измените свое первое правило на это:
# remove www and turn on https in same rule
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]
И очистите кеш браузера перед тестированием.
я нашел свое решение здесь:
### Force HTTPS
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]