2016-12-02 2 views
1

Я пытаюсь перенаправить свои URL-адреса на https. Я хотел бы сделать следующее:.htaccess: перенаправление на https без www результатов в цикле

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, но это приводит к бесконечной петле. Может кто-нибудь мне помочь?

ответ

1

Измените свое первое правило это:

# 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] 

и очистить кэш браузера перед тестированием.

+0

я не знаю, почему, но она по-прежнему не работает. так или иначе это приводит к бесконечному циклу:/ – user3681084

+0

Для тестирования закомментируйте все остальные правила и убедитесь, что вы полностью очистили кеш браузера. – anubhava

+0

не работал ни – user3681084

Смежные вопросы