2014-12-30 3 views
0

Недавно я переключился с сервера Windows на godaddy, linux, cpanel server. Я не goos с htaccess, и я думаю, что это должно быть довольно простой задачей, но я не могу понять это правильно.htaccess - перенаправить не-www на https с www

Мой SSL-сертификат настроен для работы на сайте следующим образом: https: www.mydomain.com, но не для сайта (не-www).

Я хотел бы весь трафик, поступающий на https: example.com/any-folder/any-file перенаправлены на https: www.example.com/any-folder/any-file

весь трафик идет к http: example.com/any-folder/any-file перенаправлено на http: www.example.com/any-folder/any-file

Спасибо за любую помощь, которую вы можете предоставить. Это мой файл Htaccess в настоящее время: (все запросы будут перенаправляет на HTTPS .... я запуталась)

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 
+0

возможно дубликат [Перенаправление HTTP не-WWW к HTTPS WWW HTAccess] (http://stackoverflow.com/questions/17453412/redirect-to -http-non-www-to-https-www-htaccess) – Sumurai8

+0

Я попробовал возможный дубликат, но все перенаправления URL-адресов на https. вот что я пробовал: 'RewriteEngine On' ' RewriteCond% {HTTP_HOST}!^www \. [NC] ' ' RewriteRule^(. *) $ Http://www.domain.com/$1 [L, R = 301] ' ' RewriteCond% {HTTPS} off' 'RewriteRule^(. *) $ https://www.domain.com/$1 [L, R = 301] ' – Tom

+0

Как вы заметили, код в комментариях действительно не работает. Вместо этого отредактируйте вопрос, если у вас есть дополнительная информация ;-) – Sumurai8

ответ

0

Причины такого поведения является то, что

RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 

перепишет весь запрос что недостаток www. до http://www.example.com/$1. Также для запросов HTTP. Этот переписать приведет к новому запросу, так как это перенаправление, то, что вы определили с [R].

После этого следующее правило

RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 

будет перенаправлять все запросы, которые не HTTPs к https://www.example.com/$1. Даже если исходный запрос не должен был быть HTTP.

Вы должны сделать это как-то вроде этого:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS} on 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 
+0

Я попробовал ваше предложение, но все еще одну проблему. https://example.com не перенаправляет на https://www.example.com, поэтому страницы отображаются с ошибкой сертификата. **** У проблемы с ответом первые 2 URL должны начинаться с https .... Он не отображается, когда отображается как ссылка ***** извините http://example.com действительно перенаправляет http://www.example.com. – Tom

+0

Вы очистили свой кеш браузера, прежде чем тестировали это? Я рекомендую регулярно тестировать изменения правил переопределения на новых закрытых вкладках просмотра, потому что ваш браузер будет кэшировать эти перенаправления. – LucasF

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