playframework1‎ > ‎routes‎ > ‎

URLの末尾にスラッシュを自動追加する

あらきさんのブログより「Play frameworkでブログを作ってみました」より。
 
当たり前だがPlay!ではURL末尾のスラッシュ有無がちゃんとチェックされる。
ユーザにしてみればどちらでも一緒なことがほとんどなので、末尾スラッシュが無かった場合にはスラッシュ有URLへリダイレクトされるようにしておくとユーザーフレンドリーなのでは。
 
URL末尾のスラッシュ有無の両方にマッチするように「/?」とすると、URLが2パターン存在してしまうこと、リバースルーティングでスラッシュ無が返されること、といった好ましくない動作になる。
routesファイル

GET     /[^\.]+[^/]$    Helper.addSlash

 
controllerクラス

public class Helper extends Controller {
    public static void addSlash() {
        redirect(request.url + "/");
    }
}


これ以外のルーティングはスラッシュ有で定義しておく。