我目前正在使用Grails中的过滤器,它允许我将foo.org上的所有传入请求重定向到foo.com上的相同子页面。 到目前为止,我一直在做以下事情:
if(!(""+request.requestURL).toLowerCase().startsWith(
grailsApplication.config.grails.serverURL ))
{redirect(url:"${grailsApplication.config.grails.serverURL}${request.requestURI}",params:params) }
不幸的是,我在这种方法中遇到了几个问题:
答案 0 :(得分:2)
使用request.forwardURI
。
如果您的意思是GET参数,那么应该使用上面的URI解决它?
我认为使用经典redirect
无法实现301重定向。您可以在这样的过滤器中执行此操作,这显然不是最干净的方法:
def filters = {
all(controller:'*', action:'*') {
before = {
if (request.serverName == "foo.org") {
response.setStatus(301);
response.setHeader("Location", "http://foo.com" + request.forwardURI)
response.flushBuffer()
return false; // return false, otherwise request is handled from controller
}
}
}
}