У меня есть пример, который всегда должен приводить к https://example.com, даже когда пользователь вводит www.example.com, https или нет. В идеале должен работать автоматический файл конфигурации https config letsencrypt.
Это моя текущая конфигурация:
<VirtualHost [IPV6]:80 IPV4:80>
ServerAdmin webmaster@example.com
DocumentRoot /home/example/public_html
ServerName example.com
ServerAlias www.example.com
ErrorLog logs/example.error.log
CustomLog logs/example.acccess.log common
<Directory /home/example/public_html>
Options FollowSymLinks
AllowOverride All
</Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://example.com%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost [IPV6]:443 IPV4:443>
ServerAdmin webmaster@example.com
DocumentRoot /home/example/public_html
ServerName example.com
ServerAlias www.example.com
ErrorLog logs/example.error.log
CustomLog logs/example.acccess.log common
<Directory /home/example/public_html>
Options FollowSymLinks
AllowOverride All
</Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
</VirtualHost>
Но тогда https://www.example.com выдает неверный сертификат, даже если я добавлю это в конфигурацию: 443:
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://example.com%{REQUEST_URI} [END,NE,R=permanent]
Как я могу перенаправить запросы http и https на www.example.com к https://example.com?
Клиенты прибывают в https://www.example.com поэтому даже если вы сделаете перенаправление на https://example.com тебе нужно два сертификата SSL (один для example.com, а другой для www.example.com) или единый сертификат SSL, действительный для обоих доменов.
Если вы используете Certbot для выдачи сертификатов Let's Encrypt можно использовать несколько -d
параметры для указания нескольких доменов, например:
certbot certonly --webroot -w /var/www/example -d www.example.com -d example.com