2013-02-10 40 views
1

我有一個曾經用PHP編寫的網站,我用Rails重新編寫過。它本質上是一個由帖子組成的博客平臺。我仍然使用舊的URL方案收到來自Google的請求。他們正在渲染索引頁面,但他們應該顯示引用的特定帖子。例如:在nginx中重寫RoR的PHP參數

http://domain.com/posts?page=5&postID=6433(呈現索引,第5頁)

應該是:

http://domain.com/posts/6433(展後6433)

頁面參數可以被丟棄,它被用於評論分頁和不再需要。這兩個參數都以params [:page]和params [:postID]的形式傳遞給Rails,並轉到posts控制器中的index動作。我想可以在控制器中添加一些邏輯(如果postID存在,然後顯示正確的帖子),但我認爲正確的方法是使用nginx重寫來重新構造url,目前我正在使用:

rewrite "^/posts\?page=(.*)&postID=(.*)$" /posts/$2 break; 

它似乎沒有任何影響傳遞的URL。

我正在尋求幫助,使正確的重寫URL或RoR路由將工作。

回答

1

?在正則表達式中具有特殊含義 - 它指定它之前的表達式(在本例中爲字母s)預計會發生0或1次。

你需要使用逃脫?一個\

rewrite "^/posts\?page=(.*)&postID=(.*)$" /posts/$2 break; 
+0

謝謝,我應該知道,我想我試過逃避?之前。我正在使用你現在寫的命令,並得到相同的結果。重寫命令是否需要包含在某個位置或塊是否可能? – ahab 2013-02-10 21:36:27