2014-03-07 23 views
0

我們想把我們的手機版m.website.com。由於我們的應用在Amazon EC2實例上運行,因此我們可能需要爲子域創建一個新實例,並將整個項目複製到此子域空間。如何在「m.website.com」上正確創建移動版本?

我不認爲這是非常有效的 - 有什麼辦法來對我們目前的EC2實例所有我們的代碼(在website.com),當有人將訪問我們的項目m.website.com,那麼將提供代碼從website.com這將被優化爲移動?

我們這是第一次這樣做,所以我們在這裏沒有經歷過服務器設置。

謝謝大家的提前。

layout :layout_by_subdomain 

def layout_by_subdomain 
    if request.subdomain.start_with("m") 
    layout "mobile" 
    else 
    layout "application" 
    end 
end 

而在你app/views/layouts你會:

回答

0

假設你自定義的所有應用程序的視圖中,您可以根據您是從客戶端的請求接收子站點在application_controller.rb切換佈局保持application.html.erb並添加一個mobile.html.erb

我個人認爲更好的方式去爲您的網站響應佈局。然後設備的屏幕寬度決定是否顯示移動版本。這可能不是您的選擇,但這就是「完成正確」的方式。

+0

但是這需要在子域** m.website.com **上擁有所有代碼,對吧? (所以代碼將存儲在** m.website.com **上**在** website.com **上) – user984621

+0

不,您可以通過cname將m.website.com和website.com映射到同一臺服務器條目。 –

0

你不提供你的網絡棧的細節,但是大多數web服務器可以允許你爲多個不同的主機名運行相同的代碼。

所以你應該更新你的DNS,以便www.website.com,m.website.com和website.com都指向同一個服務器(一個IP記錄,或者一個負載平衡器的CNAME記錄。有一種稱爲別名記錄的功能,允許您在負載均衡器中指向頂級域名)。

對於apache,您可以爲每個附加主機名添加一個ServerAlias。 nginx允許在server_name值中有多個名稱和通配符,並且大多數其他Web服務器都有一些處理這個的機制。

然後,如果您決定不想實施響應式設計,則可以實施@Christopher Eicke的處理不同佈局的建議。

相關問題