Ssl
apache2:將所有虛擬主機批量重定向到 https,非 www
我有一台 Apache 伺服器,在各種 conf 文件中有許多 VirtualHost。我想我可以定義一個總括規則來將所有這些主機的所有流量重定向到 HTTPS 和非 www url。
不幸的是,下面的配置(我的
000-default.conf
文件中有)只能部分工作。它適用於以http://www.domain>、<https://domain(無 www)和https://www.domain>開頭的網址。它不適用於以<http://domain開頭的使用者。Apache 拋出 403 Forbidden(無法訪問此伺服器上的 / )。作為獎勵,重定向還添加了一個額外的斜杠,我想刪除它。
<VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/letsencrypt/live/domain/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/domain/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/domain/chain.pem </VirtualHost> <VirtualHost *:80> RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.?(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,NC] </VirtualHost>
這樣做。在這種情況下,我花了一些時間來理解
RewriteRule
s 語法以及我不能使用的RedirectMatch
(Apache 推薦的)。<VirtualHost *:443> ServerAlias www.* SSLEngine on SSLCertificateFile /etc/letsencrypt/live/blaap.be/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/blaap.be/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/blaap.be/chain.pem RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)*(.*)$ [NC] RewriteRule ^/(.*)$ https://%2/$1 [R=301,NC,L] </VirtualHost> <VirtualHost *:80> RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)*(.*)$ [NC] RewriteRule ^/(.*)$ https://%2/$1 [R=301,NC,L] </VirtualHost>
如果您無法複製 vHosts 的配置,您可以嘗試按照此處所述的方式進行設置:Serve http (port 80) and https (port 443) on same VirtualHost