У меня есть конфигурация vhost, которая отлично работает для SSL. Затем я добавил это для перенаправления с не SSL на SSL.
<VirtualHost *:80>
ServerName example.com
ServerAdmin mail@example.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
Это тоже прекрасно работает. Но теперь мне нужен конфиг для перенаправления www to non www. Итак, я имею в виду следующее:
https://www.example.com => https://example.com
http://www.example.com => https://example.com
Я попробовал это так:
<VirtualHost *:80>
ServerName www.example.com
ServerAdmin mail@example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)*(.*)$ [NC]
RewriteRule ^/(.*)$ https://%2/$1 [R=301,NC,L]
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
ServerAdmin mail@example.com
SSLEngine on
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)*(.*)$ [NC]
RewriteRule ^/(.*)$ https://%2/$1 [R=301,NC,L]
</VirtualHost>
Но когда я пытался проверить это с помощью curl, я всегда получаю ответ, который http://www.example.com был перенаправлен на https://www.example.com.