Grails 2.3.2/.3升级-无法映射以.html结尾的URL

Grails 2.3.2/.3升级-无法映射以.html结尾的URL,grails,grails-2.0,Grails,Grails 2.0,将grails应用程序从2.2.2版升级到2.3.2版,最终升级到2.3.3版后,我注意到一些以前正常工作的链接现在返回404状态 为了说明这一点,以下是最初在v2.2.2中使用的示例链接和相应的URL映射条目: http://localhost:7080/pages/mytestpage http://localhost:7080/pages/mytestpage.html UrlMappings.groovy 升级后,在给定的链接中,下面的链接不再有效(即带有.html的链接): 解决此问

将grails应用程序从2.2.2版升级到2.3.2版,最终升级到2.3.3版后,我注意到一些以前正常工作的链接现在返回404状态

为了说明这一点,以下是最初在v2.2.2中使用的示例链接和相应的URL映射条目:

http://localhost:7080/pages/mytestpage
http://localhost:7080/pages/mytestpage.html
UrlMappings.groovy

升级后,在给定的链接中,下面的链接不再有效(即带有.html的链接):

解决此问题的一种方法是将URLMappings条目更改为如下所示:

UrlMappings.groovy(已修改)

我的问题是,有没有一种方法可以解决这个问题而不必更新URLMappings条目?任何能够解释这种映射在2.2.2版中实际如何工作的人都会帮上大忙。谢谢

更新

在UrlMappings.groovy中使用(.html)?而不是(.$format)?也可以工作,并且实际使用过


此外,在本例中,应用程序服务器被直接命中,而web服务器未被使用。

在Grails 2.2.x中,
Grails.mime.file.extensions=true
设置以及
Grails.mime.types
控制URL中的扩展名。基本上,Grails忽略了mime类型中列出的扩展,并相应地将url映射到控制器(这就是为什么mytestpage.html可以工作,而不是mytestpage.exe或mytestpage.anything的原因)

上面的行为似乎在Grails2.3.x+中进行了更改,以支持其余的改进。甚至
URLMappings.groovy
中的默认映射也发生了相应的变化

//Grails 2.2.x
"/$controller/$action?/$id?"{
    constraints {
        // apply constraints here
    }
}


您的解决方案似乎是解决问题的正确方法

您的回答帮助我更好地理解了这个概念。谢谢
http://localhost:7080/pages/mytestpage.html
static mappings = {
    "pages/mytestpage(.$format)?"(controller: 'testController', action: 'testAction')
}
//Grails 2.2.x
"/$controller/$action?/$id?"{
    constraints {
        // apply constraints here
    }
}
//Grails 2.3.x
"/$controller/$action?/$id?(.${format})?"{
    constraints {
        // apply constraints here
    }
}