我正在尝试在Play中设置SEO友好路线!具有多个参数的框架(第二个参数是可选的)。我的目标是:
http://domain.com/article/jsmith/name-of-article
但Play正在产生的是:
http://domain.com/article/jsmith?articleSlug=name-of-article
在我看来:
@{Article.show("jsmith","name-of-article")}
我的控制器
public static void show(String username,String articleSlug){
...
}
我的路线文件
GET /article/{username} Article.show GET /article/{username}/{articleSlug} Article.show
答案 0 :(得分:3)
似乎您的模板与第一条路线匹配。撤销订单就行了,
GET /article/{username}/{articleSlug} Article.show
GET /article/{username} Article.show
还让您的控制器接受用户名和articleSlug。
show(username, articleSlug){}
答案 1 :(得分:0)
我使用以下映射实现了您的目标:
路线:
GET /{<[0-9]+>id}/{slug} Listing.show
GET /{<[0-9]+>id} Listing.show
必须有两个控制器方法才能实现此目的:
public static void show(Long id, String slug) { /* ... */ }
public static void show(Long id) { /* ... */ }
然后可以从视图中使用它:
#{a @Listing.show(item.id, item.title.slugify())}link title#{/a}
#{a @Listing.show(item.id)}link title#{/a}