【问题标题】:Redirect trafic from exampleapp.herokuapp.com to exampleapp.com Rails [duplicate]将流量从 exampleapp.herokuapp.com 重定向到 exampleapp.com Rails [重复]
【发布时间】:2014-11-11 10:17:01
【问题描述】:

我在 heroku 上托管了一个 Rails 3.2 应用程序,目前可以从许多不同的 url 访问它。

https://some-string.herokussl.com

http://myapp.herokuapp.com

https://myapp.herokuapp.com

https://myapp.com

http://myapp.com

我已经完成了 www 到裸重定向并在 rails 中强制使用 ssl。但仍然可以通过以下网址访问它

https://some-string.herokussl.com

https://myapp.herokuapp.com

从 SEO 的角度来看这是非常错误的。

那么,我应该怎么做才能将流量从 heroku 域重定向到我的自定义域 领域。是否有一些我应该在我的应用程序中应用的 gem 或配置。

谢谢!

【问题讨论】:

  • @mdesantis 我使用的是 dnsimple,所以子域到顶点重定向在这里没有问题。这工作正常。我只想从 heroku 域重定向。

标签: ruby-on-rails ruby ruby-on-rails-3 heroku http-redirect


【解决方案1】:

只需将以下内容添加到您的application_controller.rb

PREFERED_HOST = 'www.our_domain.tld'
before_filter :redirect_to_prefered_host

...

private
def redirect_to_prefered_host
  if Rails.env.production? && request.host != PREFERED_HOST
    redirect_to(:host => PREFERED_HOST)
  end
end

【讨论】:

  • 它可以工作,但是首先将http版本myapp.herokuapp.com重定向到安全myapp.herokuapp.com,然后再重定向到myapp.com/posts。这是默认的控制器路径。这是多个重定向。
  • 如果您有多个重定向而不是将它们组合成一种方法。此外,我不会太在意这方面的 SEO。 Naked 和 SSL 应该被重定向。但是如果你不告诉别人 herokuapp.com 的 URL,搜索引擎就不会找到那个 URL。
【解决方案2】:

您应该使用rack-canonical-hostrack-rewrite

【讨论】:

  • 我尝试了 rack-canonical-host 并且成功了。谢谢!
  • 但我的开发环境将localhost:3000 重定向到myapp.com:3000,即使我使用的是 use Rack::CanonicalHost, ENV['CANONICAL_HOST'], force_ssl: true if ENV['CANONICAL_HOST']
  • 我使用 rack-rewrite,对不起:/
  • 问题出在本地环境中的环境变量上。解决了。​​
猜你喜欢
  • 2019-08-28
  • 1970-01-01
  • 2017-07-21
  • 2015-08-07
  • 2019-08-26
  • 2016-05-09
  • 2019-09-15
  • 2012-09-26
  • 1970-01-01
相关资源
最近更新 更多