使用 www apache2 重定向到 https://

使用 www apache2 重定向到 https://

我正在使用这样的 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.comhttps://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。

相关内容