2010-03-01 24 views
6

La forma estándar de creación de direcciones URL en griales es:Griales SEO URLs amigables

<a href="${createLink(controller:'news', action: 'show', params: [id: news.id])}">${news.title}</a> 

que genera la url: /news/show/102

Quiero URLs amigables más de SEO como:

/news/102/this-is-the-hottest-news-today 

Lo es la forma más limpia de hacer esto en Grails? Podría usar grills URLMapping en el mapa /news/show/102 al /news/102, pero ¿cómo creo la URL completa como la anterior?

Respuesta

15

Se podría convertir el título en un parámetro de la siguiente manera:

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

De esa manera usted puede crear sus URL con el siguiente titular en ellos y el mapeo puede funcionar. Por supuesto, no tiene que usar el parámetro del título que aparecerá en su controlador. El ejemplo anterior utiliza una correlación de URL llamado para que a continuación se puede decir:

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

Usted también podría estar interesado en este plugin para crear direcciones URL canónicas - http://www.grails.org/plugin/canonical

+0

1. El argumento 'mapeo' era lo que estaba necesitando. Gracias. – Langali

+0

Dave gracias! Este método es muy útil para sitios multilingües, donde puede orientar a un asignador determinado dependiendo de la configuración regional actual. En mi ejemplo, tengo mapeos de story-en y story-hr y en mi g: link utilizo mapeo: "story - $ {locale}" que selecciona el mapeador adecuado para la configuración regional seleccionada. –