Привет!
Пытаюсь настроить два редиректа:
1. с http -> на https
2. с www -> без www
Т.е.:
-
www.site.ru/?param=val ->
https://site.ru/?param=val
-
site.ru/?param=val ->
https://site.ru/?param=val
-
https://www.site.ru/?param=val ->
https://site.ru/?param=val
Но получается настроить только в виде 2х отдельных правил, каждое из которых отвечает за свое:
# HTTPS
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# WWW
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Если попытаться объединить их в одно, чтобы в любом случае делался только один редирект, то в зависимости от последней строки работает что-то одно - либо форсирование https, либо www.
RewriteCond %{SERVER_PORT} !^443$ [OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
# работает только www (При соединении с сайтом http://site.ru/ произошло нарушение сетевого протокола, которое не может быть устранено.)
# RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# работает только HTTPS (При соединении с www.site.ru произошла ошибка. Эта проблема может возникать при отключении или запрещении принятия кук.)
# RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Есть возможность объединить эти условия или нет?