我使用 apache2 主機 .conf 檔案將所有 http:// 請求重定向到 https:// ,如下所示。
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect / https://www.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
#more details here
</VirtualHost>
這工作正常並將所有請求重定向到 https://
現在我想將我的非 www 請求重新導向到 www(所以https://example.com到https://www.example.com)。我嘗試在上述 443 塊之前和之後添加以下行。但沒有運氣:(
<VirtualHost *:443>
ServerName example.com
Redirect / https://www.example.com/
</VirtualHost>
知道如何在沒有 .htaccess 的情況下啟用此功能。
請幫忙..
答案1
您想要將重新導向新增至現有*:443
虛擬主機。像這樣的事情應該要這樣做:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
將其放在任何其他RewriteRule
部分之前。
答案2
你所擁有的已經是正確的。
*:443
並且您需要定義NameVirtualHost
.
使用此配置來# more details here
進行所有 SSL 設置,就像您已經擁有的那樣:
NameVirtualHost *:443
<VirtualHost *:443>
ServerName www.example.com
# more details here
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
Redirect / https://www.example.com/
# more details here
</VirtualHost>
您需要 SSL 憑證詳細信息每個 VirtualHost
容器,即使它們是相同的。
請不使用額外的 IPv4 位址 - 此用例不需要消耗額外的 IP 位址。 HTTP/1.1 可以處理一個 IP 位址上的多個網域,包括使用 SSL。