我有一个 apache 服务器 v2.2,在 80 上有一个虚拟主机,在 444 上还有一个带 SSL 的虚拟主机。我想重定向所有这种请求:
http://domain.tld:444/dir1
http://domain.tld:444/dir2
(SSL 端口上没有 https)
https://domain.tld:444/dir1
https://domain.tld:444/dir2
为了避免错误 400 Bad request。你知道该怎么做吗?
提前致谢。
答案1
您不能这样做。如果您在端口 444 上启用了 SSL,则没有 SSL 的连接将无法正常工作。
答案2
Apache 无法直接执行此操作。当它侦听端口时,它侦听的是纯 HTTP 流量或 HTTPS 流量,而另一种类型的连接将失败。
然而,一个聪明的应用程序可以尝试检查初始连接数据,决定正在尝试哪种连接,并采取适当的措施。安全组这样做。要使用它,您必须设置两个 Apache 虚拟主机,每个虚拟主机侦听本地主机地址上的不同端口。设置好这些后,您将让 sslh 侦听端口 444,并将 HTTP 和 HTTPS 流量转发到适当的内部端口。
答案3
只需设置您的配置以使用 mod_alias 的重定向:
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost >