【问题标题】:Is it possible to redirect a url that uses HTTPS protocol? (Heroku, Rails)是否可以重定向使用 HTTPS 协议的 url? (Heroku,Rails)
【发布时间】:2014-04-05 07:59:39
【问题描述】:

我切换了我的应用程序的域,并且重定向适用于使用 http 的 url,但是我有一些使用 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 不匹配”。

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 谢谢,我为此找到了一个宝石:机架重写。它有点工作。它将重定向myolddomain.com,但不会重定向myolddomain.com。它还会引发证书不匹配警告。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-19
      • 2017-03-26
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      • 2014-03-01
      相关资源
      最近更新 更多