あらきさんのブログ(http://blog.arahaya.com/2011/12/new-blog-running-on-play/)より「Play frameworkでブログを作ってみました」より。(残念ながらリンク切れてしまいました>インターネットアーカイブはこちら)
当たり前だがPlay!ではURL末尾のスラッシュ有無がちゃんとチェックされる。
ユーザにしてみればどちらでも一緒なことがほとんどなので、末尾スラッシュが無かった場合にはスラッシュ有URLへリダイレクトされるようにしておくとユーザーフレンドリーなのでは。
URL末尾のスラッシュ有無の両方にマッチするように「/?
」とすると、URLが2パターン存在してしまうこと、リバースルーティングでスラッシュ無が返されること、といった好ましくない動作になる。
GET /[^\.]+[^/]$ Helper.addSlash
public class Helper extends Controller {
public static void addSlash() {
redirect(request.url + "/");
}
}
これ以外のルーティングはスラッシュ有で定義しておく。