Apache-2.4
使用 zonefile 或letsencrypt 配置 www.domain.com 和 domain.com 以始終轉發到 domain.com
我有一個範例應該始終導致https://example.com,即使使用者輸入www.example.com, https 與否。理想情況下,自動化的letsencrypt config https 配置文件應該可以工作。
- 我試圖刪除 www 的 A 記錄並使用 CNAME 來指向 example.com 或 @。這似乎沒有任何影響,使用者仍然最終訪問 www。我不知道為什麼。
這是我目前的配置:
<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>
但是,即使我將其添加到 :443 配置中, https: //www.example.com 也會拋出錯誤的證書:
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