是否可以将根域URL映射到Grails的控制器?

时间:2010-04-08 10:20:43

标签: tomcat grails url-rewriting

让我们举个例子:Grails项目myproj部署在Tomcat 6中。它可以通过以下链接访问:http://www.mycompany.com/myproj

假设我们购买了另一个域http://newcompany.com,我们想将其指向http://www.mycompany.com/myproj/url

如果我转到http://newcompany.com/12345,则应与执行http://www.mycompany.com/myproj/url/12345相同。

有人能告诉我这是否可行?如何实现它(更改Tomcat 6配置,在UrlMappings.groovy中添加代码)?

提前致谢。

3 个答案:

答案 0 :(得分:2)

如果您使用Apache使用Tomcat并使用通过mod_rewrite和/或mod_jk重写的URL,则指向同一站点的两个域很简单。

也可以在tomcat配置中添加别名,虽然我认为你不能只使用一个上下文路径的别名,而只使用Tomcat的一个别名,所以你可能需要让你的应用知道不同的主机。

更大的问题是,你真的想要同一个实例的2个域,因为它可能会混淆用户和搜索引擎,并且几乎肯定会导致错误。

答案 1 :(得分:1)

您可以使用UrlMappings.groovy将控制器映射到根索引。例如,我希望我的root索引“/”由我的loginController.groovy控制。所以我添加了UrlMapping条目“/”(控制器:'登录',操作:'索引')

UrlMappings.groovy如下所示:

class UrlMappings {
    static mappings = {
        // MJC - added this in an attempt to give a controller some control
        // over the root.
        "/"(controller:'login',action:'index')

      "/$controller/$action?/$id?"{
            constraints {
                // apply constraints here
            }
        }
        // "/"(view:"/index")
        "500"(view:'/error')
    }

}

希望这会有所帮助......

  • Monte C. Concept Automation Support,Inc。

答案 2 :(得分:0)

有一个名为URLRewrite的Java Web过滤器可能会执行您想要的操作 - 它为Tomcat执行与mod_rewrite对Apache相同的工作。