2011-03-22 58 views

回答

4

使用Heroku的插件自定義域:

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

此外,你必須採取一些配置步驟,在您的域名提供商的管理界面。您需要一個CNAME到proxy.heroku.com和三個A-RECORDs到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 
1

首先,如果您不希望您的myapp.heroku.com被索引,只需在您的標題中添加機器人元標記並賦予「nofollow」值。

和重定向添加另一meta標籤刷新:

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

含量值是以秒,上面的例子就直接在2秒內visiotrs到您的主頁。

希望它有助於

2

第一個答案去一部分的方式來解決這個問題,但引入了一個新的問題。

如果您添加www.myapp.com和myapp.com,您需要將其中的一個重定向到您的應用程序中的其他應用程序 - 因此,如果您選擇www.myapp.com作爲您的主要應用程序,檢查請求的URL是否爲不是 www.myapp.com並將請求重定向到www.myapp.com - 然後這將覆蓋正確轉向myapp.com和myapp.heroku.com的重定向請求。 Heroku在他們的文檔here上有一個例子。

此外,您需要擺脫谷歌已經在Heroku域上編入索引的內容。你需要使用Google WebMaster tools改變域www.myapp.com - 這是一個相對簡單的過程,一旦你登錄到網站管理員工具

+0

使用Google網站管理員工具將域名更改爲其他域名對於子域名不起作用。至少我沒有得到它的工作。有沒有可能對此做點什麼? – Cristian 2011-12-27 15:28:28

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' 
0

使用hide_heroku寶石,它使用X-Robots-Tag中的HTTP頭,以防止搜索引擎索引什麼* .herokuapp.com