2011-04-21 36 views
2

如果我有一個網址,如:在Grails中如何根據URL中的哈希碼解析和重定向?

www.example.com/?state=1#app/itemSearch?q=apple &貓=書籍& PG = 1個

在我的Grails應用程序如果服務器檢測上述網址,它應該重定向到:

www.example.com/app/itemSearch?q=apple &貓=書籍& PG = 1

我怎麼能這樣做?

假定控制器名稱爲主,並且動作是服務請求的索引爲/。所以上述邏輯將在這個控制器和操作中。

+3

僅供參考 - 在#後位永遠不會發送到服務器,只有瀏覽器和客戶端腳本見它。 – Greg 2011-04-21 14:33:33

+0

感謝您的評論。在這種情況下,如果#是否發送給服務器是真的,那麼我將不得不將URL改爲:www.example.com/?state=1app/itemSearch?q=apple&cat=books&pg=1 – ace 2011-04-21 14:52:54

+0

小心,我認爲一個網址有多個問號是無效的。您的服務器可能能夠進行重寫以應對它,但其他應用程序可能無法以您期望的方式處理這樣的網址。 – Greg 2011-04-21 15:59:27

回答

1

您不能使用「碎片標識符」(哈希)來達到此目的,因爲它的處理僅限於客戶端,沒有來自Web服務器的參與。 1

你應該通過參數發送URL enconding這樣:

def encondedUrl = java.net.URLEncoder.encode("www.example.com/app/itemSearch?q=apple&cat=books&pg=1") 

Wikipedia Fragment identifier