2016-10-11 16 views
1

Я хочу перенаправить http на https и www на www.http to https, www to non www и уважать URL-адреса

случаи:

http://example.com/my/url 
http://www.example.com/my/url 
https://example.com/my/url 
https://www.example.com/my/url 

Результат

https://example.com/my/url 
https://example.com/my/url 
https://example.com/my/url 
https://example.com/my/url 

Мой текущий файл .htaccess:

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC] 
RewriteRule ^(.*) https://%1/$1 [R=301,NE,L] 

RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301] 

Задача:

Он перенаправляет на https://example.com/index.php.

Я хочу, чтобы он уважал URL-адрес https://example.com/my/url.

Я нашел много вопросов, но я еще не нашел полного решения. Фактически, код htaccess, приведенный выше, был единственным, который работал достаточно хорошо, как 10 попыток.

ответ

2

Вы можете использовать одно правило для удаления www и http -> https:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^www\. [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule^https://%1%{REQUEST_URI} [R=301,L,NE] 

# rest of rules go here .... 

Если у вас есть проблема с слишком много переадресаций, попробуйте заменить вторую строку с:
RewriteCond %{ENV:HTTPS} !on

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

+1

Приятно иметь все это в одном правиле. Я думаю, что решение было поставить его перед любыми другими правилами. Благодаря! –