【发布时间】:2013-04-11 22:35:35
【问题描述】:
任何已经使用 Grails 实现过类似功能的人都可以告诉我,在 Facebook、Twitter、Linkedin 中创建格式为“http://www.myservice.com/username”的用户个人资料 URL 有哪些好的做法(如果有的话)?
我正在尝试通过 UrlMappings 来实现它,在我看来,我需要打破代码约定,至少对于控制器而言。
所以,欢迎任何建议,谢谢。
更新 1
当我提到我对违反代码约定的担忧时,我的意思是我想使用此映射显示用户配置文件,但我的应用程序中确实有其他对象,我想使用默认值访问映射:
"/$controller/$action?/$id?"()
解决方案
感谢我在这里收到的巨大贡献,我想出了这个解决方案,它解决了我的问题。
正如所指出的,要进行这种映射,我需要更密切地控制我的请求的处理方式。这意味着我需要告诉 Grails 我不想将哪些控制器映射到“用户名”规则。
因为这将是一项非常乏味的任务(因为我有多个控制器),所以我这样做是为了使其自动化:
UrlMappings.groovy
static mappings = {
getGrailsApplication().controllerClasses.each{ controllerClass ->
"/${controllerClass.logicalPropertyName}/$action?/$id?"(controller: controllerClass.logicalPropertyName)
}
"/$username/$action?"(controller: "user", action: "profile")
}
...
}
当然,我需要在我的用户注册过程中执行类似的操作,以避免用户名与某些控制器名称相同。
就是这样,谢谢大家。
【问题讨论】:
-
this tutorial 做了一些非常相似的事情,我想你可以从中得到一些指导。 (部分
Displaying entries by author) -
谢谢,但这不是我所需要的。本教程处理映射问题,但通过添加前缀“/blog/”来避免与 URL 的多个可能匹配。
标签: grails seo url-mapping