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

时间:2011-03-22 21:12:28

标签: seo heroku

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

是重复的内容吗?

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

7 个答案:

答案 0 :(得分:5)

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

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

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

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

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

if request.env['HTTP_HOST'] != APP_DOMAIN && ENV["RAILS_ENV"] != 'development'

答案 1 :(得分:4)

使用Heroku附加组件自定义域:

heroku addons:add custom_domains:basic
heroku domains:add www.myapp.com
heroku domains:add myapp.com

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

编辑以回复下面的其他答案。您可以在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

答案 2 :(得分:3)

我建议使用rack-canonical-host将Heroku的子域重定向到您的自定义域。

答案 3 :(得分:2)

可靠的规范是一种可能性 只需在您的应用页面上添加<link rel="canonical" href="http://mydomain.com"/><link rel="canonical" href="http://mydomain.com/page"/>,...

请参阅http://www.google.com/support/webmasters/bin/answer.py?answer=139394

google会将规范元素中的网址视为该特定网页的正确资源。

答案 4 :(得分:2)

第一个答案是解决问题的部分方法,但引入了一个新问题。

如果您添加www.myapp.com和myapp.com,则需要将其中一个重定向到您应用程序中的另一个 - 所以如果您选择www.myapp.com作为主要内容,则需要检查如果请求的网址 www.myapp.com并将请求重定向到www.myapp.com - 这将覆盖重定向到myapp.com和myapp.heroku.com的请求。 Heroku在他们的文档here上有一个例子。

此外,您需要删除Google已在Heroku域上编入索引的内容。您需要使用Google WebMaster tools将域名更改为www.myapp.com - 一旦您登录网站管理员工具,这是一个相对简单的过程

答案 5 :(得分:1)

首先,如果您不希望仅通过在标题中添加机器人元标记来索引myapp.heroku.com,并将值赋予“nofollow”。

并且对于重定向,只需添加另一个元标记刷新:

<meta http-equiv="refresh" content="2;url=http://www.heroku.com/">  

内容值以秒为单位,上面的示例将在2秒内将屏幕保护程序指向主页。

希望有所帮助

答案 6 :(得分:0)

使用hide_heroku gem,它使用X-Robots-Tag HTTP标头来阻止搜索引擎将 *下的任何内容编入索引。* herokuapp.com