2011-05-30 57 views
19

我正在構建一個rails應用程序,我將在Heroku上的host.com上託管。而且我想在託管在phpfog上的博客中使用WordPress,但我不想使用像blog.domain.com這樣的子域。我寧願使用像domain.com/blog如何使用子目錄而不是子域?

子目錄它不是關於搜索引擎優化...我只是不喜歡子域的粉絲。子目錄更性感(是的,我實際上是這麼說的)。

關於我如何可靠地完成此任何想法?先謝謝您的幫助。

+0

我不知道這是否是可能的,因爲你不能Heroku的主持下WordPress的。 – bruno077 2011-05-30 18:08:24

+0

基於下面的答案,同研究,我做了位一起,我想它可能最好還是推出自己的小鐵軌博客引擎到我的應用程序。我已經看到了「在15分鐘內建立一個博客」軌道視頻。我不想使用腳手架(我可以沒有任何)。我的應用程序有點像博客式的開頭,無論如何......帖子,評論等。我將不得不設置某種用戶權限,以便只有擁有管理員帳戶的用戶才能發佈到博客。 – Eddie 2011-05-30 22:33:47

+0

我不能爲這個項目推薦Ryan的railscasts,他有一個博客的例子,所以有很多資源可以幫助你。 http://railscasts.com – bruno077 2011-05-30 22:58:39

回答

3

我想說你最好的選擇是嘗試使用Rack中間件來做一個反向代理(類似於Apache的mod_proxy)。

快速谷歌搜索揭示了這個寶石(https://github.com/jaswope/rack-reverse-proxy),但作者提到它可能不是生產就緒。擁有Rack中間件代理應該允許您將您的子域yourdomain.com/blog轉發到另一個網站your-phpfog-account.com/wordpress-installation

1

據我可以告訴你,如果你可以使用Rewrite規則,就不能使用heroku訪問Apache配置文件。

如果您選擇不使用heroku,您可以隨時做下面詳細介紹的內容..但是,如果您不使用heroku,您可以輕鬆將wordpress提取到/ public/rails文件夾,並再次使用重寫規則讓Apache來處理博客請求。

在你的apache配置中,你需要添加。

RewriteRule ^/blog/?(.*)$ http://somedomain.com/~user/blog/$1 [P,NC,QSA,L] 

它會將所有請求重定向到/ blog /到另一個服務器。

來源:http://www.igvita.com/2007/07/04/integrating-wordpress-and-rails/

+0

我不認爲重寫是他想要的東西,因爲這會在地址欄的地址更改爲'another-domain.com/blog',而不是'original-domain.com/blog'。 – neezer 2011-05-30 21:03:45

+0

啊我明白了。我不熟悉mod_rewrite的工作原理。我只是做了一些谷歌搜索,並假設他會做他想做的。 – 2011-05-30 21:18:28

18

您可以使用neezer發現這樣做的rack-reverse-proxy gem。首先,您需要將gem "rack-reverse-proxy", :require => "rack/reverse_proxy"添加到您的Gemfile並運行bundle install。接下來,您將修改config.ru/blog/路由轉發到您想要的博客:

require ::File.expand_path('../config/environment', __FILE__) 

use Rack::ReverseProxy do 
     reverse_proxy /^\/blog(\/.*)$/, 'http://notch.tumblr.com$1', opts={:preserve_host => true} 
end 

run YourAppName::Application 

你可能已經有了第一個要求語句和run YourAppName...聲明。有幾個重要的細節使這項工作。

首先,當您添加所需的博客URL時,無法在其上保留斜線。如果是這樣,當有人要求http://yourdomain.com/blog/時,該寶石會將它們轉發到http://you.yourbloghost.com//並附帶一個額外的斜線。

其次,如果:preserve_host選項未啓用,您的博客託管服務器將看到該請求爲http://yourdomain.com/blog/而不是http://you.yourbloghost.com,並且將返回錯誤結果。

如果博客使用/absolute/paths/to/images/,您仍然可能會遇到CSS或圖片問題。

+0

你如何處理tumblr使用絕對URL鏈接到包含主機名的內容的事實? – 2012-10-08 21:43:48

+0

克里斯,恐怕我沒有很好的解決方案。我使用的是Wordpress,您可以手動指定它在頁面內容中使用的基本路徑,所以我不需要解決這個問題。如果你想涉進定製的源代碼機架反向代理,以便它編輯認爲的tumblr返回HTML,你可以修改它.. – jplewicke 2012-10-14 14:32:28

+0

是的,我正在玩周圍試圖找出如何做到這一點。我正在考慮做一些正則表達式替換,但是從文檔中不太清楚這將如何完成。 – 2012-10-17 03:38:17