Heroku子域重复内容?如何重定向到域?

Rai*_*ner 7 seo heroku

Google已将我的Heroku应用子域编入索引:myapp.heroku.com

它是重复内容吗?

我应该如何将myapp.heroku.com重定向到mydomain.com?

rap*_*cal 5

根据自定义域的Heroku文档,您可以这样做:

class ApplicationController
  before_filter :ensure_domain

  APP_DOMAIN = 'myapp.mydomain.com'

  def ensure_domain
    if request.env['HTTP_HOST'] != APP_DOMAIN
      # HTTP 301 is a "permanent" redirect
      redirect_to "http://#{APP_DOMAIN}", :status => 301
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我使用这种方法,它工作正常.请注意,由于重定向返回301 http状态(永久重定向),因此您的网站不会因重复内容而受到处罚.

301状态是Markus解决方案中唯一缺失的一点,但我认为如果您关注的是SEO,这是一个重要的问题.

编辑:文档上没有的内容我忘了提及 - 您应该排除不希望应用重定向的环境.您可以将if语句更改为:

if request.env['HTTP_HOST'] != APP_DOMAIN && ENV["RAILS_ENV"] != 'development'
Run Code Online (Sandbox Code Playgroud)


Mar*_*ske 4

使用 Heroku 附加自定义域:

heroku addons:add custom_domains:basic
heroku domains:add www.myapp.com
heroku domains:add myapp.com
Run Code Online (Sandbox Code Playgroud)

此外,您还必须在域名提供商的管理界面上执行一些配置步骤。您需要proxy.heroku.com的 CNAME和 Heroku IP 的三个 A-RECORD。您可以在 Heroku 文档中找到它。

编辑以回应下面的另一个答案。您可以在routes.rb中将myapp.com重定向到www.myapp.com:

 constraints(:host => /^communityguides.eu/) do
    root :to => redirect("http://www.communityguides.eu")
    match '/*path', :to => redirect {|params| "http://www.communityguides.eu/#{params[:path]}"}
  end
Run Code Online (Sandbox Code Playgroud)