Grails重定向包含尾随正斜杠

时间:2014-03-06 20:49:46

标签: grails grails-2.0

我正在使用Grails 2.3.6,并尝试重定向一个URL以包含一个正斜杠,但是保留URL的其余部分。原因是因为我有动态内容,会有图像和附件。我希望这些图像和附件显示为动态内容的子页面,例如:

http://example.com/content

将指向动态生成的内容,没有问题。但是,如果我想要一个附件,我将包含一个指向attachments/file1.pdf的href链接。 问题是,通过上面的示例,它会生成http://example.com/attachments/file1.pdf(请注意/content/已被删除)。

我真正想要的是看起来像这样的道路:

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

我认为最好的解决方法是将内容的URL重定向到包含正斜杠(如果它们还没有)。不幸的是,我一直遇到错误或重定向循环。

我在这里尝试了这个建议:Grails UrlMapping Redirect to keep DRY,但是当我告诉同一个网址去两个不同的地方时,UrlMappings.groovy没有足够的区别(唯一的区别是尾随斜线)

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 个答案:

答案 0 :(得分:1)

此解决方案解决了问题的需要,但不是我在问题中寻找的确切解决方案。

使用<base>元素提供用于所有相对网址的基本href似乎是最佳解决方法。

对于上面的解决方案,我会使用:

<base href="http://example.com/content">