【发布时间】:2016-09-07 09:19:08
【问题描述】:
我有一个 Apache 服务器设置为在端口 80 上侦听几个域,并在其中两个域上侦听 443(至少这是我想要的)。 所以我的虚拟主机 *:443 带有“my-ssl-domain.com”和“my-other-ssl-domain.com”ServerName。这两个域还有一个 Virtualhost *:80,它使用 mod_rewrite 简单地重定向到 HTTPS 版本。我正在为他们两个都使用 let's encrypt。
我还有多个 (>10) 其他只能通过 HTTP 工作的域。
如果我转到“https://www.my-non-ssl-domain.com”,浏览器会抱怨没有有效的证书。谷歌似乎也将该页面编入索引,我想避免它,因为它似乎是糟糕的 SEO。
我希望它 301 将“https://www.my-non-ssl-domain.com”重定向到“http://www.my-non-ssl-domain.com”,或者至少根本不回答,就好像使用 HTTPS 的域根本不存在一样。
我该如何解决这个问题?
【问题讨论】:
-
此时不要使用
Virtualhost *:443,而是明确指定主机名。 -
什么意思?我没有提到 Apache 侦听我所有域(SSL 和非 SSL)的相同 IP 地址。
-
如果您使用
*:443,则此 VirtualHost 将用作所有未明确指定“自己的”VH 的主机名的后备。因此,您需要使用Virtualhost somedomain.local:443之类的内容来表明此 VH 仅适用于该特定域(加上 ServerAliases),而不适用于不存在显式配置的每个传入 HTTPS 请求。 -
那没有帮助。如果没有找到匹配的 ServerName,Apache 仍然会使用默认的 VirtualHost 配置来回答。
标签: apache redirect ssl mod-rewrite lets-encrypt