Grails SEO-дружественные URL - PullRequest
6 голосов
/ 01 марта 2010

Стандартный способ создания 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? Я мог бы использовать Grails URLMapping для сопоставления /news/show/102 с /news/102, но как мне создать полный URL, как указано выше?

1 Ответ

15 голосов
/ 02 марта 2010

Вы можете превратить заголовок в параметр, подобный этому:

name story: "/news/$id/$headline" {
    controller = "news"
    action = "show"
}

Таким образом, вы можете создать свои URL с заголовком, и отображение все равно будет работать. Вам, конечно, не обязательно использовать параметр заголовка, который появится в вашем контроллере. В приведенном выше примере используется сопоставление именованных URL, поэтому вы можете сказать:

${createLink(mapping: "story", params: [id: 102, headline: 'this-is-the-hottest-news-today'])}

Вам также может быть интересен этот плагин для создания канонических URL - http://www.grails.org/plugin/canonical

...