我正在使用playframework,我希望生成像stackoverflow这样的复杂网址。例如,我想生成一个问题的网址:
http://aaa.com/questions/123456/How-to-generator-a-complex-url
请注意最后一部分,这是问题的标题。
但我不知道该怎么做。
已更新
在playframework中,我们可以在conf/routes
文件中定义路由,我的工作是:
GET /questions/{<\d+>id} Questions.show
这样,当我们在视图中调用@{Questions.show(id)}
时,它将生成:
http://aaa.com/questions/123456
但如何让生成的标题部分很难。
答案 0 :(得分:11)
使用playframework,很容易生成这样的url。在路线文件中添加以下内容:
GET /questions/{id}/{title} YourController.yourMethod
请参阅playframework网站上有关路由的文档以获取更多信息
在你的html页面中:
<a href="@{YourController.yourMethod(id,title.slugify())}">
来自JavaExtensions的slugify方法,从保留字符中清除标题(see doc)
答案 1 :(得分:2)
服务器端网址重写器。如果是SO,则输入{...}/questions/4698625/how-to-generate-complex-url-like-stackoverflow或{...}/questions/4698625并不重要 - 它们都会重定向到相同的内容。因此,此后缀仅用于提高URL的可读性。
要查看有关网址重写的更多详细信息,请参阅this post。
<强> UPD:强> 生成这样的后缀,
最好使用正则表达式执行此操作