由於我無法控制的情況,我的生產露營地出現在mysite.example.com/mysite
。我很確定這是一個常見的Apache/Passenger配置問題,我對如何解決它現在不感興趣,因爲服務器不在我的控制之下。可以說,「/」的控制器指向那裏,我不能馬上改變這一點。野營的URL()不會按預期給我「網站根」嗎?
現在,很長一段時間,這不是一個問題,因爲R(MyIndexController)
指向正確的位置。不過,我使用Rack::Static
調用服務我的網站的CSS使$ SITE_ROOT/public可訪問。這意味着樣式表位於mysite.example.com/mysite/css/style.css
。問題出在哪裏:在我的佈局中調用時,Camping URL()
方法給出http://mysite.example.com
,而不是http://mysite.example.com/mysite
。所以我不能指向/ css子目錄,因爲它缺少中間的「跳躍」。當我在本地運行機架時,一切正常(因爲此文件位於localhost:8080/css/style.css
),但在生產服務器上我不知道如何解決此問題。
我的問題:是否有另一種方法(可能直接從Rack?),我應該調用?我真的想要避免對其進行硬編碼,並且/或者通過黑客來確定我是在本地運行(用於調試)還是在生產環境中運行,用於佈局的每個渲染。 ETA:OK,這會變得陌生。很顯然,我已經將上面的一些實際細節抽象出來了,其中一部分我認爲我「過度清理」了。 「頂級」URL實際上更類似於/mysite/rest
(我們的RESTful界面的以開發人員爲中心的HTML演示文稿),而不是/mysite/management
(帳戶)或/mysite/ui
(JQuery的「好」UI)。這些設置在我們的config.ru中,通過run Rack::URLMap.new(Hash['/rest' => RestModule, '/ui' => PrettyInterfaceModule, '/management' => UserManagerModule]
等。
因此,在回答以下注釋時,RestModule中的視圖R(Index)實際上返回/mysite/rest/
。例如,我在佈局中有一個「主頁」鏈接,該鏈接看起來像a :href=>R(Index)
,並生成類似<a href="/mysite/rest/">
的代碼。如前所述,服務器配置爲直接在「網站根目錄」提供來自./public的文件,因此./public/css/style.css
實際上在http://mysite.example.com/mysite/css/style.css
上應用。這是,鏈接,我有麻煩自動生成,這是因爲Rack :: URLMap,我想我可能不得不依靠本地Rack方法(而不是露營抽象)來定位此資源。
R(MyController)返回什麼? /我的網站/? – 2010-09-21 08:07:26