我正在使用这样的 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>
您需要在每个 VirtualHost
容器,即使它们是相同的。
请不使用额外的 IPv4 地址 - 此用例不需要消耗额外的 IP 地址。HTTP/1.1 可以在一个 IP 地址上处理多个域,包括使用 SSL。