【问题标题】:Redirect www. to bare domain when using SSL重定向www。使用 SSL 时裸域
【发布时间】:2012-05-05 21:43:05
【问题描述】:

一些背景:我正在为domain.comalternate-domain.com 域下的网站提供服务。我想重定向所有请求,以便他们:

  1. 使用 SSL(基本上,重定向 http -> https)
  2. 使用规范的主机名domain.com(例如删除www前缀)

这就是我的 apache 配置顶部的内容:

<VirtualHost *:80>
  Redirect permanent / https://domain.com/
</VirtualHost>

<VirtualHost *:433>
  Redirect permanent / https://domain.com/
  SSLEngine on

  # SSL Certificate directives are here.
</VirtualHost>

然后我有https://domain.com的配置:

<VirtualHost *:443>
  ServerName domain.com
  # ...
</VirtualHost>

当我访问非 HTTPS 页面时,这可以正常工作:

但是,当我通过 HTTPS 访问域时它不起作用。我的意思是重定向不会发生

例子:

(注意:出现证书警告是正常的,因为它们与我拥有证书的域不匹配。重定向用户的更多理由。)

我做错了什么?

【问题讨论】:

标签: apache ssl mod-ssl


【解决方案1】:

好的,问题解决了——我犯了一个典型的愚蠢错误。

在 SSL 默认虚拟主机中,我侦听端口 433。当然应该是443

【讨论】:

  • 请注意,您使用的证书需要对您使用的所有主机名都有效(有和没有www)。
  • 除了用户输入https://www.domain.com 的可能性有多大?他们可能会输入http://www.domain.com,然后重定向到https
【解决方案2】:

您的配置表明,当有人输入 https://groupstreamer.com/ 的 URL 时,服务器应将他们重定向到 https://groupstreamer.com/ - 您看不到这里的缺陷吗?

在 443 虚拟主机中丢失重定向。如果您必须使用前端控制器(由于很多原因这是错误的),请使用 404 处理程序。

【讨论】:

  • 感谢您的回答,但这不是虚拟主机的工作方式 - Apache 匹配 ServerName 指令并将第一个虚拟主机用于不匹配的域。
猜你喜欢
  • 2015-04-24
  • 2015-01-07
  • 2013-10-31
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
相关资源
最近更新 更多