Apache 重定向 - 让我们加密 SSL 证书重定向到裸域而不是 www

Apache 重定向 - 让我们加密 SSL 证书重定向到裸域而不是 www

我最近建立了一个运行 Wordpress 的新网站,运行良好。由于我想为网站获取 SSL 证书,所以我想使用 Let's Encrypt,因为我听说它有很多优点。

好吧,我同意花了 30 秒才让 SSL 在我的域名上运行起来,但是有一个小问题。

Let's encrypt 制定了以下规则:

http://域名.com->https://domain.com(失败)

http://www.domain.com->https://www.domain.com(作品)

该证书仅适用于 www.domain.com,这很烦人。过去我购买的所有 SSL 证书都包含 domain.com 和 www.domain.com。不确定我在获取 Let's Encrypt 证书时是否做错了什么,但事实就是这样。

我需要做的就是改变现状http://域名.com重定向至https://www.domain.com

但由于我是 Apache 新手,我不知道该怎么做。我的 .htaccess 文件中有以下重定向规则,但它似乎没有帮助,因为 Apache 似乎在请求到达 .htaccess 文件中的重写规则之前就重定向了。规则如下:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

所以我被这个问题难住了。在我添加 SSL 证书之前,网站正确地从 domain.com 重定向到了 www.domain.com,所以这似乎是 Let's Encrypt 自动安装所做的事情,但我找不到它。

这是 Let's Encrypt 添加到我的 Apache 配置文件的重写规则:

RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,QSA,R=permanent]

我认为它与上面那行有某种联系,但我不知道是什么。

任何帮助,将不胜感激。

答案1

您需要为非 www 域创建一个单独的 VirtualHost,并像这样设置重定向:

<VirtualHost *:80> ServerName domain.com Redirect 301 / https://www.domain.com </VirtualHost>

基本上,将上述代码添加到 httpd.conf 应该可以解决您的问题。不过,您可能需要查阅操作系统文档,了解如何将虚拟主机添加到 apache...

相关内容