Apache将http请求重写为https

我有一个Apache服务器V2.2,虚拟主机在80上,另一个在444上使用SSL。我想redirect所有这种请求:

http://domain.tld:444/dir1 http://domain.tld:444/dir2 

(没有SSL端口上的https)

 https://domain.tld:444/dir1 https://domain.tld:444/dir2 

为了避免错误400错误的请求。 你知道怎么做?

提前致谢。

你不能这样做。 如果您在端口444上启用了SSL,那么没有SSL连接到该端口将无法正常工作。

Apache不能直接这样做。 当它在端口上侦听时,它正在监听纯HTTP或HTTPS通信,而其他types的连接将会失败。

但是,一个聪明的应用程序可以尝试检查初始连接数据,决定正在尝试什么样的连接,并采取适当的措施。 sslh这样做。 要使用它,你将不得不build立两个Apache虚拟主机,每个虚拟主机在localhost地址的不同端口上监听。 有了这些,你将有sslh监听端口444,并转发HTTP和HTTPSstream量到适当的内部端口。

只需将您的configuration设置为使用mod_alias的redirect:

 <VirtualHost *:80> ServerName www.example.com Redirect permanent / https://www.example.com/ </VirtualHost > 

来源: mod_alias#redirect