カテゴリ: Symfony 更新日: 2025/12/19

Symfonyで404や403のエラーページをカスタマイズする方法!初心者でもわかるルーティングのエラー処理

Symfonyのルーティングで404や403をカスタマイズする方法
Symfonyのルーティングで404や403をカスタマイズする方法

先生と生徒の会話形式で理解しよう

生徒

「Symfonyで、ページが見つからないときやアクセスできないときに、もっとわかりやすい画面にしたいんですけど、できますか?」

先生

「はい、Symfonyでは、404(ページが見つからない)や403(アクセス禁止)といったエラー画面を自由にカスタマイズすることができますよ。」

生徒

「エラーって英語の画面が出てくるので、見た人がびっくりしちゃいそうで…」

先生

「そのとおりですね。それでは、エラーページを自分で作る方法を一緒に見ていきましょう!」

1. 404エラーと403エラーとは?

1. 404エラーと403エラーとは?
1. 404エラーと403エラーとは?

404エラーは、「そのページは存在しません」という意味のエラーです。URLを間違えたときや、存在しないルートにアクセスしたときに出ます。

403エラーは、「そのページにはアクセスできません」という意味です。ログインしていないと見られないページなどにアクセスしたときに表示されます。

どちらも、Symfonyのルーティングに関連する重要なエラーです。

2. Symfonyではどうやってエラーを表示しているの?

2. Symfonyではどうやってエラーを表示しているの?
2. Symfonyではどうやってエラーを表示しているの?

Symfonyでは、エラーが起きたときにtemplates/bundles/TwigBundle/Exceptionという特別な場所にあるテンプレートを使ってエラーページを表示します。

このフォルダの中にファイルを作っておけば、Symfonyは自動的にそれを使ってエラー画面を出してくれます。

3. 404エラーページのカスタマイズ方法

3. 404エラーページのカスタマイズ方法
3. 404エラーページのカスタマイズ方法

まずは、「ページが見つかりません」という404エラー画面を作ってみましょう。次のようにテンプレートファイルを作成します。


{# templates/bundles/TwigBundle/Exception/error404.html.twig #}
<!DOCTYPE html>
<html>
  <head>
    <title>ページが見つかりません</title>
  </head>
  <body>
    <h1>404 - お探しのページは見つかりませんでした</h1>
    <p>URLをもう一度ご確認ください。</p>
    <a href="/">トップページに戻る</a>
  </body>
</html>

このファイルを作ることで、404エラーが発生したときにオリジナルの日本語ページが表示されるようになります。

4. 403エラーページのカスタマイズ方法

4. 403エラーページのカスタマイズ方法
4. 403エラーページのカスタマイズ方法

次に、403(アクセス禁止)のエラーページも作っておきましょう。以下のようにファイルを作ります。


{# templates/bundles/TwigBundle/Exception/error403.html.twig #}
<!DOCTYPE html>
<html>
  <head>
    <title>アクセスできません</title>
  </head>
  <body>
    <h1>403 - このページにはアクセスできません</h1>
    <p>必要な権限がないか、ログインしていない可能性があります。</p>
    <a href="/login">ログインページへ</a>
  </body>
</html>

これで、アクセス制限がかかっているページにアクセスしたときに、ユーザーにやさしい説明を出せるようになります。

5. すべてのエラーに共通のページを出す方法

5. すべてのエラーに共通のページを出す方法
5. すべてのエラーに共通のページを出す方法

404や403だけでなく、すべてのエラーに対して共通のカスタムエラーページを出したい場合は、次のようなファイルを作成します。


{# templates/bundles/TwigBundle/Exception/error.html.twig #}
<!DOCTYPE html>
<html>
  <head>
    <title>エラーが発生しました</title>
  </head>
  <body>
    <h1>エラーコード: {{ status_code }}</h1>
    <p>申し訳ありません。問題が発生しました。</p>
    <a href="/">トップページに戻る</a>
  </body>
</html>

{{ status_code }}は、表示されるエラー番号(例:404や403)を動的に出してくれる変数です。

6. Twigとは?テンプレートエンジンのしくみ

6. Twigとは?テンプレートエンジンのしくみ
6. Twigとは?テンプレートエンジンのしくみ

これまでの例に出てきた.twigという拡張子のファイルは、Twig(トゥイッグ)というテンプレートエンジンで書かれたものです。HTMLの中に{{ }}のような変数を入れて、動的に内容を変えることができます。

たとえば、{{ status_code }}と書けば、現在のエラー番号が表示される仕組みです。

7. テンプレートの配置場所に注意しよう

7. テンプレートの配置場所に注意しよう
7. テンプレートの配置場所に注意しよう

Symfonyでエラー画面をカスタマイズするには、templates/bundles/TwigBundle/Exception という場所にファイルを置く必要があります。スペルミスやフォルダの位置を間違えると、カスタム画面が反映されません。

もし、正しく動作しないときは、キャッシュをクリアしてみましょう。


php bin/console cache:clear

これでSymfonyが新しいテンプレートを読み込んでくれるようになります。

8. かわいいエラー画面や案内リンクをつけてみよう

8. かわいいエラー画面や案内リンクをつけてみよう
8. かわいいエラー画面や案内リンクをつけてみよう

エラー画面はただの警告だけでなく、見る人が安心できるようなデザインにすることも大切です。イラストを表示したり、トップページやサポートへのリンクをつけたりすると、ユーザーにとってやさしいWebサイトになります。

たとえば、「こちらからトップページへ戻れます」といったリンクをつけるだけでも印象が変わります。

まとめ

まとめ
まとめ

Symfonyのエラーページカスタマイズを振り返ろう

この記事では、Symfonyで発生する代表的なエラーである404エラーや403エラーを中心に、エラーページをカスタマイズする方法を学んできました。WebサイトやWebアプリケーションを運営していると、存在しないページにアクセスされたり、権限のないページを開こうとされたりする場面は必ず発生します。そのときに、無機質な英語のエラー画面が表示されると、利用者は不安になってしまいます。

Symfonyでは、テンプレートを正しい場所に配置するだけで、エラー画面を自由にカスタマイズできます。特に templates/bundles/TwigBundle/Exception というディレクトリは、エラー処理において重要な役割を持っています。この場所に error404.html.twigerror403.html.twig を用意することで、エラーの種類ごとに分かりやすい説明を表示できるようになります。

404と403を分けて考えることの大切さ

404エラーは「ページが存在しない」ことを伝えるエラーであり、URLの間違いやリンク切れが原因になることが多いです。一方、403エラーは「アクセス権限がない」ことを示すエラーで、ログイン状態やユーザー権限と深く関係しています。この2つを正しく使い分け、それぞれに合ったメッセージを表示することで、ユーザーは次に何をすればよいのか理解しやすくなります。

例えば、404エラーではトップページへのリンクを案内し、403エラーではログインページへのリンクを表示するといった工夫ができます。こうした小さな配慮が、使いやすいWebサイトにつながっていきます。

共通エラーページとTwigの活用

個別のエラーだけでなく、すべてのエラーに共通するページを用意できる点もSymfonyの便利なところです。error.html.twig を作成すれば、404や403以外のエラーが発生した場合でも、統一感のある画面を表示できます。Twigテンプレートエンジンを使えば、{{ status_code }} のようにエラーコードを動的に表示することも可能です。

TwigはHTMLに近い書き方ができるため、プログラミング初心者でも比較的理解しやすいテンプレートエンジンです。エラーページの中で変数を表示したり、共通レイアウトを使ったりすることで、デザインと処理をきれいに分けて管理できます。

初心者向けのシンプルなエラーページ例

最後に、最低限の情報だけを表示する、とてもシンプルなエラーページの例を見てみましょう。まずは難しく考えず、「何が起きたのか」と「次にどうすればいいか」を伝えることが大切です。


{# templates/bundles/TwigBundle/Exception/error404.html.twig #}
<!DOCTYPE html>
<html>
  <head>
    <title>ページが見つかりません</title>
  </head>
  <body>
    <h1>404エラー</h1>
    <p>お探しのページは存在しないようです。</p>
    <a href="/">トップページへ戻る</a>
  </body>
</html>

このような画面を用意するだけでも、利用者にとっては安心感が大きく変わります。デザインや文章は、サイトの雰囲気に合わせて少しずつ調整していきましょう。

先生と生徒の振り返り会話

生徒

「Symfonyって、エラー画面までちゃんと自分で作れるんですね。英語の画面が出なくなるだけでも安心です。」

先生

「そうですね。エラーページは見落とされがちですが、ユーザー体験に大きく関わる部分です。」

生徒

「404と403で意味が違うことも、今回でしっかり理解できました。」

先生

「その理解はとても大切です。それぞれに合った案内を出せるようになりますからね。」

生徒

「まずはシンプルなエラーページから作って、少しずつ見た目も工夫してみます。」

先生

「それが一番です。Symfonyのエラー処理に慣れてくると、安心してアプリを公開できるようになりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Symfonyで404エラーとは何ですか?初心者でもわかるように説明してください。

Symfonyの404エラーとは、「指定されたページが存在しない」という意味のエラーです。URLを間違えたり、ルートが登録されていない場合に表示されます。
関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)