[play1-routes]URLの末尾にスラッシュを自動追加する

  playframework1

あらきさんのブログ(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 + "/");
    }
}

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

LEAVE A COMMENT