我最近建立了一个运行 Wordpress 的新网站,它运行良好。因为我想为网站获得 SSL 证书,所以我想我会使用 Let's Encrypt,因为我听到了很多关于它的好消息。
好吧,我必须同意让 SSL 在我的域上运行需要 30 秒,但有一个小问题。
Let's encrypt 设置了以下规则:
http://domain.com -> https://domain.com(失败)
http://www.domain.com -> https://www.domain.com(有效)
该证书仅适用于令人讨厌的 www.domain.com。过去我购买的所有 SSL 证书都在 SSL 证书中包含 domain.com 和 www.domain.com。不确定我在获取 Let's Encrypt 证书时是否做错了,但事实就是这样。
我需要做的就是改变一些事情,以便http://domain.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 自动安装所做的事情,但我找不到它。
这是添加到我的 Apache 配置文件中的重写规则 Let's Encrypt:
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,QSA,R=permanent]
我认为这与上述行有关,但我不知道是什么。
任何帮助,将不胜感激。
您需要为非 www 域创建一个单独的 VirtualHost 并从中设置重定向,如下所示:
<VirtualHost *:80> ServerName domain.com Redirect 301 / https://www.domain.com </VirtualHost>
基本上,将上述代码添加到您的 httpd.conf 应该可以解决您的问题。尽管您可能想查阅有关向 apache 添加虚拟主机的操作系统文档...