我正在使用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
}
提前感谢您的任何帮助!
答案 0 :(得分:1)
此解决方案解决了问题的需要,但不是我在问题中寻找的确切解决方案。
使用<base>
元素提供用于所有相对网址的基本href似乎是最佳解决方法。
对于上面的解决方案,我会使用:
<base href="http://example.com/content">