Как сделать 301 редирект для всего сайта с http и www на https без www?
if ($http_host != "site.ru") { rewrite ^ $scheme://site.ru$request_uri? permanent; }
if ($scheme != "https") { rewrite ^ https://$http_host$request_uri? permanent;}
Ещё можно для http сделать отдельный виртуальный хост и редиректить с него по этому правилуrewrite ^ https://$http_host$request_uri? permanent;
И аналогично сделать виртуальный хост для www отдельный и редиректить там такrewrite ^ $scheme://site.ru$request_uri? permanent;
Поясню разницу подходов, если будут отдельные виртуальные хосты будет оптимальнее. Ведь if проверяется при каждом открытии тратя ресурсы, а если редиректы распиханы по виртуальным хостам ресурсы не тратятся)
Добавьте в файле .htaccess код:RewriteEngine On

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