0

私はプレイ フレームワーク 2.3 バージョンを使用し、静的な html を提供しています (プレイ テンプレート エンジンは使用していません)。

#静的リソースを /public フォルダーから /assets URL パスにマップします GET /assets/*file controllers.Assets.at(path="/public", file)

ユーザーが間違った URL にアクセスしようとしたときに 404 ページを提供したい

たとえば、パブリック アセット フォルダーに 2 つの html があります。
public/html/a.html
public/html/b.html
public/error/404.html

URL: localhost/assets/html/a.html -> 200 OK
URL: localhost/assets/html/b.html -> 200 OK
URL: localhost/assets/html/c.html -> 404 NOT FOUND PAGE なので私はこのページを提供したい (URL: localhost/assets/error/404.html)

私はすでに Global.onHandlerNotFound と Global.onBadRequest を使用しようとしていますが、これは静的リソースの場合には機能しません。

私を助けてください。ありがとうございました。

4

1 に答える 1

0

まず、404 エラーの静的 html をpublic/フォルダーに配置します (例: public/error404.html)。

次に、onHandlerNotFound メソッドで、Play docs が呼び出されるはずであると伝えます

フレームワークがリクエストのアクションを見つけられない場合、onHandlerNotFound オペレーションが呼び出されます。

そのページに戻ります。だから、あなたはそれをそのまま返すことができます

return Results.redirect(routes.Assets.at("error404.html"));

私はあなたの質問を誤解していたと思います。

このメソッドは、見つからないアクションを処理することになっていることに注意してください。見つからないアセットを処理したい場合は、組み込みの Assets コントローラーを変更する必要があると思います。それができたら、アセットの応答を処理するアクション、Assets.at アクションです。アセットがない場合、おそらく単に Results.notFound() を呼び出します。グローバルメソッドを呼び出さないので、エラーを処理できます。それがポイントです。

于 2014-12-11T12:19:27.037 に答える