Назад | Перейти на главную страницу

Настройка www.domain.com и domain.com с помощью zonefile или letsencrypt для постоянной переадресации на domain.com

У меня есть пример, который всегда должен приводить к 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