Google已将我的Heroku应用子域编入索引:myapp.heroku.com
是重复的内容吗?
我应该如何将myapp.heroku.com重定向到mydomain.com?
答案 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