2011-04-08 94 views
0

我有一個用PHP編寫的舊應用程序,現在我正在用新的RoR應用程序替換它。舊的應用程序具有「this-is-seo-title,n123.html」之類的鏈接。在htaccess中有一條規則將這些鏈接轉換爲news.php?id = 123。Ruby on Rails和標準mod_rewrite

現在,當我設置RoR應用程序時,鏈接處於「RoR方式」(:controller /:action /:id)。這很酷,很好,但在谷歌我有大約5萬個索引的子頁面。我不想讓這個索引的子頁面打破,所以現在這是一個問題:

我可以在htaccess文件中創建新的規則,它將翻譯「this-is-seo-title,n123.html」鏈接到/ news/123?

我還沒有部署應用程序,我無法訪問乘客模塊的環境,所以我無法自己測試它。

回答

0

我不認爲有必要使用htaccess。如果你打算使用rails,那麼使用rails helper來完成。我想,這應該在你的routes.rb工作:

match 'this-is-seo-title,n:id.html' => 'news#show' 

這條路將調用NewsController,並與123作爲show動作:id參數。那是你在哪裏尋找的?

編輯:

對於梁2

map.connect 'this-is-seo-title,n:id.html', :controller => 'news', :action => 'show' 

至少我認爲,這將在Rails的2工作,我沒有任何的環境並運行ATM與測試。讓我知道如果它不起作用。

+0

我犯了錯,我在2.3.6 RoR工作。有可能使它在RoR3下的版本中工作? – Arti 2011-04-08 15:41:27

+0

不幸的是它不工作。我試過: – Arti 2011-04-08 17:32:54

+0

我試過了:map.connect'/news,n:id.html',:controller =>'posts',:action =>'show'和map.connect'news,n:id.html', :controller =>'posts',:action =>'show'and I am error:No route matches「/news,n897.html」with {:method =>:get} – Arti 2011-04-08 17:33:52