2014-03-06 60 views
4

我正在使用Grails 2.3.6,並嘗試重定向URL以包含尾隨的正斜槓,但保留原有網址的其餘部分。原因是因爲我有動態的內容,它會有圖像和附件。我想這些圖片和附件顯示爲動態內容的子頁面,例如:Grails重定向以包含尾隨正斜槓

http://example.com/content 

將指向一個動態生成的一段內容,沒有任何問題。但是,如果我想要附件,我會包含一個指向attachments/file1.pdf的href鏈接。 問題是,通過上面的例子,它會產生http://example.com/attachments/file1.pdf(注意/content/已被刪除)。

我真正想要的是路徑看起來像:

http://example.com/content/attachments/file1.pdf 

我想最好的解決辦法是有內容的網址被重定向到包含正斜槓(如果他們不這樣做已經有一)。不幸的是,我一直陷入錯誤或重定向循環。

我在這裏嘗試了建議:Grails UrlMapping Redirect to keep DRY,但UrlMappings.groovy不區分不夠,當我告訴相同的URL去兩個不同的地方(唯一的區別是最後的斜線)

static mappings = { 
    "/${content}/"(controller: "application", action: "index") 
    "/${content}"(controller: "application", action: "redirectToAddSlash") 
} 

我也知道Grails 2.3包含UrlMapping重定向,但提供的示例不包含嵌入的變量。

理想我想有這樣的事情:提前

static mappings = { 
    "/${content}/"(controller: "application", action: "index") <=== Has trailing slash 
    "/${content}"(redirect: "/${content}/")     <=== Redirect to include trailing slash 
} 

感謝任何幫助!

回答

1

該解決方案解決了問題的需要,但並不是我在問題中尋找的確切解決方案。

使用<base>元素來提供基礎href用於所有相對URL似乎是最好的解決方法。

對於在溶液上方我會使用:

<base href="http://example.com/content"> 
相關問題