HTTP到HTTPS与mod_rewrite; Apache需要重启

我刚刚注册,这是我的第一个问题。 如果我需要在别的地方问问,请告诉我。

我们需要为SSLconfiguration站点,并将所有HTTP通信redirect到HTTPS。 我们决定使用mod_rewrite,因为我们已经使用了一些重写规则。 这些变化在我们的开发环境中进行了testing,并且按预期工作。 我们对生产进行了改变,发现它工作了几个小时,但最终开始失败,网站变得不可用。 一旦Apache服务重新启动,该站点恢复。 不幸的是,它不会持久,最终需要重复。

有人提到我的一些指导,说mod_rewrite不build议,并使用VirtualHosts来代替。 我想了解为什么这是首选的方法,并希望find我们遇到的问题的根源。 我们刚刚closures了重写规则,网站在443和80上都稳定下来。

https://wiki.apache.org/httpd/RewriteHTTPToHTTPS “注意:使用mod_rewrite来做到这一点不是推荐的行为”

https://wiki.apache.org/httpd/RedirectSSL “虽然推荐这个解决scheme是因为它更简单,更安全,但也可以使用mod_rewrite来获得与此处所述相同的效果”

有没有人知道为什么这是build议通过mod_rewrite的具体细节? 类似的经验? 关于下一步的build议?

Apache 2.4.18

在Windows Server 2008 R2上运行

我们尝试了MaxConnectionsPerChild 0和其他值没有区别。 我看到MaxConnectionResetsPerChild在“中断”期间到达,这些重置似乎不能解决问题..而不是手动重新启动Apache服务/父进程。

 RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https//wontletmepostlink.duetorep/1$ [R,L] 

我会回答你的一个问题:

mod_alias ,提供RedirectRedirectMatchRedirect对于简单的Redirect已经足够了,而RedirectMatch提供了redirectURL类的方法。

作为一个额外的参考,请参阅何时不使用mod_rewrite ,其中提供了许多示例,并解释了为什么不使用mod_rewrite的一切。

mod_rewrite应该被认为是最后的手段,当其他select被发现想要。 当有更简单的select时,使用它会导致configuration混乱,脆弱和难以维护。