Mik*_*ike 35

您最好的选择是设置与DNS提供商的重定向,以便在任何请求到达您的服务器之前很久就会发生.来自Heroku开发中心:

对于对裸域的所有请求,子域重定向会导致301永久重定向到指定的子域,以便正确路由所有当前和将来的请求,并在用户的位置字段中显示完整的www主机名.

DNSimple提供了一个方便的URL重定向,此处可以从heroku-sslendpoint.com裸域重定向到 www.heroku-sslendpoint.com子域. 在此输入图像描述

为了在Heroku上正确配置,www子域应该是对yourappname.herokuapp.com的CNAME记录引用.

这不仅仅是DNSimple.我的DNS提供商是123 Reg,他们支持它,但称之为web forwarding.

  • 您应该知道,有时,在处理SSL时,这种重定向不会这样做.具体来说,DNSimple无法处理重定向,如https://example.com => https://www.example.com.请参阅http://support.dnsimple.com/articles/url-redirect-ssl (3认同)

Mar*_*rth 10

我建议在请求生命周期中尽早做到这一点.如果您要使用Apache,则需要将URL Rewrite添加到VirtualHosts文件中.在Heroku上你需要添加一些Rack中间件.

这里作为另一种方式的例子(即www.example.org- > example.org).我不认为你将它改成你的用例会有很大的问题.

这样,请求将不会显示在您的日志中,也不需要所有Rails的请求解析.

  • Heroku不允许您访问vhosts文件. (2认同)