我最近建立了一个运行 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...