Стандартный способ создать URL в чашах Грааля:
<a href="${createLink(controller:'news', action: 'show', params: [id: news.id])}">${news.title}</a>
который генерирует URL: /news/show/102
Я хочу больше SEO дружественные URL как:
/news/102/this-is-the-hottest-news-today
Что самый чистый путь состоит в том, чтобы сделать это в Grails? Я мог использовать чаши Грааля URLMapping для отображения /news/show/102
кому: /news/102
, но как я действительно создаю полный URL как вышеупомянутый?
Вы можете превратить заголовок в параметр, например, так:
name story: "/news/$id/$headline" {
controller = "news"
action = "show"
}
Таким образом, вы сможете создавать урлы с заголовком, и связка все равно будет работать. Конечно, на самом деле вам не обязательно использовать параметр заголовка, который появится в вашем контроллере. В примере выше используется именованное отображение URL, поэтому вы можете сказать:
${createLink(mapping: "story", params: [id: 102, headline: 'this-is-the-hottest-news-today'])}
Вас также может заинтересовать этот плагин для создания канонических урлов - http://www.grails.org/plugin/canonical