Редирект с https://www. на https:// средствами Apache mod_rewrite?

Пытаюсь настроить одновременное перенаправление с www.sitename.com на sitename.com и с http на https. Приведенные ниже правила работают замечательно за исключением того, что не происходит редирект с https://www.sitename.com на https://sitename.com. Остальные варианты срабатывают.



<pre>
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R,L]

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</pre><br/>




Пробовал сделать так:



<pre>
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R,L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R,L]

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</pre><br/>




Этот вариант тоже не срабатывает. Такое ощущение, что RewriteCond %{HTTP_HOST} для https запросов вообще никогда не срабатывает. Гугл не помог.
  • Вопрос задан
  • 38647 просмотров
Решения вопроса 1
Dennion
@Dennion
Разработчик PHPShop CMS.
Не отдает он https в .htaccess, можно через $_SERVER['https'] поймать в php.
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
@demshyn
Попробуй этот код:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]

Мне помогло. Взято отсюда.
Ответ написан
Комментировать
@bondbig
Делайте два рерайта, сперва с www на http://, а потом на https://
Ответ написан
xaker1
@xaker1
Попробуйте
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule (.*) site.ru/$1 [L,R=301]
Ответ написан
@videns
Да, сталкивался с таким. В итоге проверял номер порта. Типа такого:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ www.domain.tld/$1 [L,R]
Ответ написан
@MrCrock
RewriteCond %{HTTPS} off
RewriteRule (.*) https ://%{HTTP_HOST}%{REQUEST_URI}


После https уберите пробел (парсер хабра искажает). Поменяйте %{HTTP_HOST} на ваш sitename.com
Ответ написан
Alexufo
@Alexufo
противоречивый, сложный, весь компьютерный.
Попробуй так.
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Ответ написан
Комментировать
@freehostua
Работаю в FREEhost.UA
Если фронтэндом стоит nginx может не быть переменной https поэтому можно так

RewriteCond %{HTTP_X_FORWARDED_PROTO} http
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы