2012-05-01 25 views
2

我已經看了整個互聯網,但不能得到一個最終的解決方案,我會期望是100%的DNS等設置以獲得以下結果在Heroku.com:Rails:適當的設置與DNS,Heroku機架重寫等

我可以得到一個來自世界各地的幫助,但沒有結果這將處理從DNS到機架重寫的整個問題,這就是爲什麼我在這裏問的原因(在我的註冊商和Heroku的支持只能給我「他們的一部分」)。

什麼需要做的是,據我的理解:

  1. 在Heroku的

  2. 更改CNAME到自定義域添加mydomain.com和www.mydomain.com到http://myapp.herokuapp.com在我註冊商DNS。 問題:它會同時使用將「CNAME」重定向到myapp.herokuapp.com的「www」和「*」嗎?

  3. 添加「@」DNS記錄以處理裸露域請求(http://mydomain.com)。由於這不會使用CNAME完成,因此我使用的IP地址爲https://devcenter.heroku.com/articles/custom-domains,儘管根據文章它們存在嚴重的正常運行時間問題。

- 1-3給我留下了一個網站,將在http://myapp.herokuapp.com

Ç服務都http://mydomain.comhttp://www.mydomain.com與內容。現在,我想重定向從http://mydomain.comhttp://www.mydomain.com的所有內容,根據Heroku的支持,這應該使用rack-rewrite(https://github.com/jtrupiano/rack-rewrite)完成。使用在那裏的例子,代碼應該是:

r301 %r{.*}, 'http://mydomain.com$&', :if => Proc.new {|rack_env| 
    rack_env['SERVER_NAME'] != 'www.mydomain.com' 
} 

然而,這爲我創造了一個永恆的循環。

因此,我的問題是現在:爲了實現這種設置,Heroku和DNS設置的正確工作流程是什麼?

對此進行故障排除非常困難,因爲通過試錯嘗試不同的DNS設置非常困難(很難知道它們是否已經通過)。

回答

5

這是重寫規則我認爲這是說:「做301重定向到‘http://mydomain.com $ &’(其中$ &表示它將在.COM之後保留一切),但僅當主機在請求不是'www.mydomain.com'「。

因此,您將進入重定向循環,因爲您的服務器中沒有www的任何請求,例如裸體mydomain.com,將重定向回mydomain.com。

它可能需要重寫的東西,如:

r301 %r{.*}, 'http://www.mydomain.com$&', :if => Proc.new {|rack_env| 
rack_env['SERVER_NAME'] == 'mydomain.com'} 

所以,你重定向到您的域的WWW版本。

其實是有dupe here

編輯: 這是我會做什麼:

  1. 刪除您的重定向規則
  2. 設置你的DNS,這樣既www.domain.com和domain.com返回myapp.herokuapp.com
  3. 驗證dns的工作原理而不用擔心重定向
  4. 請確保它在DNS級別上不會嘗試做一些有用的重定向

在這個階段,沒有任何與DNS有關的事情要做。他們唯一做的是返回一個IP地址(A記錄)或另一個域(CNAME)。然後他們的工作就完成了。

下一頁:

  1. 應用機架重寫規則
  2. 服務器可能需要重新啓動 - 做以防萬一
  3. 測試使用類似Sam Spade - 頭將包含一個301重定向和新的位置,如果它工作正常
+0

謝謝,這對重定向問題有一些啓發。關於重複,我測試了一個,但也許是因爲我有DNS設置,我無法使它工作。這就是爲什麼我想採取一種「完整」的方法,因爲DNS設置也會影響到這一點,並且很難(對我來說)理解什麼在做什麼。 – Christoffer

+0

......哦,那實際上也會爲我創造一個無限循環。不知道是否因爲我的DNS設置,但仍然無法正常工作。 – Christoffer

+0

使用像Sam Spade,Fiddler和你的基本ping這樣的工具來解決這個問題是否與DNS或你的網絡應用有關。如果DNS正在返回相應的域名/ IP,那麼它可能不是DNS問題。 – edralph