
我有一個例子,應該總是導致https://example.com,即使使用者正在輸入www.example.com、https 與否。理想情況下,自動的 letencrypt 設定 https 設定檔應該可以運作。
- 我嘗試刪除 www 的 A 記錄並使用 CNAME 來指向 example.com 或 @。這似乎沒有任何效果,用戶仍然會訪問 www.我不知道為什麼。
這是我目前的配置:
<VirtualHost [IPV6]:80 IPV4:80>
ServerAdmin [email protected]
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 [email protected]
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?
答案1
客戶到達https://www.example.com所以即使你重定向到https://example.com你需要兩個 SSL 憑證(一個用於 example.com,另一個用於www.example.com) 或者對兩個網域都有效的單一 SSL 憑證。
如果您正在使用證書機器人若要頒發 Let's Encrypt 證書,您可以使用多個-d
參數來指定多個網域,例如:
certbot certonly --webroot -w /var/www/example -d www.example.com -d example.com