是否可以重定向使用HTTPS协议的URL? (Heroku,Rails)

时间:2014-03-04 01:02:40

标签: ruby-on-rails ssl heroku dns routing

我切换了应用的域名,重定向适用于使用http的网址,但是我在网上使用非重定向的HTTPS潜伏着一些链接。

例如,http://myolddomain.com重定向很好,但https://myolddomain.com结果只返回一般服务器错误。是否可以重定向这些链接?我正在使用rails 3和heroku。

更新:

我正在尝试rack-rewrite gem。这是我要添加到生产环境文件中的代码:

#mod_rewrite using rack-rewrite gem
config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
  rewrite   '^https://www.myolddomain.com/(.*)$', 'https://www.mynewdomain.com/$1'
  rewrite   '^https://myolddomain.com/(.*)$', 'https://www.mynewdomain.com/$1'
end

它成功地重定向https://myolddomain.com但不是https://www.myoldomain.com。它也为ssl证书抛出一个错误,“服务器的证书与URL不匹配。”

2 个答案:

答案 0 :(得分:1)

你能做到的一种方法是使用apache或nginx。他们都支持url重定向。您只需要指定两个规则,一个用于http,另一个用于https。虽然,我肯定你可以写一个正则表达式包括两者。

您可以在应用程序根目录中的.htaccess文件中编写自定义规则

有关详情,请参阅以下链接。

How do I get mod_rewrite working on Heroku?

http://wiki.nginx.org/HttpRewriteModule

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

答案 1 :(得分:0)

为了让您的网站甚至回复https://myolddomain.com,它需要拥有myolddomain.com的证书,否则它会因证书不匹配而失败,因为Heroku在所有应用上都默认使用通配符证书* .herokuapp.com - 在执行任何机架模块之前,将检查证书。

如果您想在Heroku处理https流量,您唯一的选择就是购买SSL并使用SSL端点插件。

或者,您可以使用外部服务器重定向旧域(带有已加载的证书)以重定向到Heroku上的新域。