Google已将我的Heroku应用子域编入索引:myapp.heroku.com
它是重复内容吗?
我应该如何将myapp.heroku.com重定向到mydomain.com?
根据自定义域的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)
使用 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)
| 归档时间: |
|
| 查看次数: |
2351 次 |
| 最近记录: |