最終更新: 2026年2月 | Laravel 12対応
Laravelの全ルート情報を一覧表示するphp artisan route:listコマンドについて、基本的な使い方から実務での活用方法、便利なフィルタリングオプションまで徹底解説します。
💡 他のコマンドも知りたい方は artisanコマンド完全チートシート をご覧ください
1. route:listコマンドとは
php artisan route:listは、アプリケーションに登録されている全ルート(エンドポイント)を一覧表示するコマンドです。
このコマンドでできること
- ✅ 全ルート(URL)の確認
- ✅ 各ルートのHTTPメソッド確認
- ✅ どのコントローラー・アクションが紐付いているか確認
- ✅ ミドルウェアの確認
- ✅ ルート名の確認
- ✅ 特定条件でのフィルタリング
いつ使うのか
開発中:
- 「このURLはどのコントローラーが処理してる?」
- 「このルート名は何に紐付いてる?」
- APIエンドポイントの一覧確認
- ルーティングの重複チェック
デバッグ時:
- 404エラーの原因調査
- ミドルウェアの適用確認
- ルートパラメータの確認
ドキュメント作成時:
- API仕様書のベース情報収集
- エンドポイント一覧の作成
2. 基本的な使い方
最も基本的な使い方
php artisan route:list実行結果の例:
GET|HEAD / .......................................................... home › HomeController@index
GET|HEAD api/user .................................................... login › Api\UserController@show
POST api/posts .................................................. posts.store › Api\PostController@store
GET|HEAD api/posts .................................................. posts.index › Api\PostController@index
GET|HEAD api/posts/{post} .......................................... posts.show › Api\PostController@show
PUT|PATCH api/posts/{post} .......................................... posts.update › Api\PostController@update
DELETE api/posts/{post} .......................................... posts.destroy › Api\PostController@destroyLaravel 12の新しい表示形式
Laravel 12では、より見やすい表形式がデフォルトになりました(環境による):
php artisan route:list --columns=method,uri,name,action出力例:
┌────────────┬─────────────────────┬───────────────┬──────────────────────────────┐
│ Method │ URI │ Name │ Action │
├────────────┼─────────────────────┼───────────────┼──────────────────────────────┤
│ GET│HEAD │ / │ home │ HomeController@index │
│ GET│HEAD │ api/user │ login │ Api\UserController@show │
│ POST │ api/posts │ posts.store │ Api\PostController@store │
│ GET│HEAD │ api/posts │ posts.index │ Api\PostController@index │
│ GET│HEAD │ api/posts/{post} │ posts.show │ Api\PostController@show │
│ PUT│PATCH │ api/posts/{post} │ posts.update │ Api\PostController@update │
│ DELETE │ api/posts/{post} │ posts.destroy │ Api\PostController@destroy │
└────────────┴─────────────────────┴───────────────┴──────────────────────────────┘オプション一覧(全て)
| オプション | 説明 | 使用例 |
|---|---|---|
--method= | HTTPメソッドでフィルタ | --method=GET |
--name= | ルート名でフィルタ | --name=posts |
--path= | URIパスでフィルタ | --path=api |
--except-path= | 指定パスを除外 | --except-path=api |
--domain= | ドメインでフィルタ | --domain=admin |
--except-vendor | ベンダールート除外 | --except-vendor |
--only-vendor | ベンダールートのみ表示 | --only-vendor |
--columns= | 表示カラム指定 | --columns=method,uri,name |
--compact | コンパクト表示 | --compact |
--json | JSON形式で出力 | --json |
--reverse | 逆順で表示 | --reverse |
--sort= | ソート基準指定 | --sort=method |
3. 便利なフィルタリングオプション
3-1. HTTPメソッドでフィルタ
GETメソッドのみ表示
php artisan route:list --method=GET出力例:
GET|HEAD / .......................................................... home › HomeController@index
GET|HEAD api/user .................................................... Api\UserController@show
GET|HEAD api/posts .................................................. posts.index › Api\PostController@index
GET|HEAD api/posts/{post} .......................................... posts.show › Api\PostController@showPOSTメソッドのみ表示
php artisan route:list --method=POST用途:
- フォーム送信先の確認
- CSRF保護が必要なエンドポイントの洗い出し
複数メソッドの指定(Laravel 11+)
php artisan route:list --method=POST --method=PUT3-2. パスでフィルタ
APIルートのみ表示
php artisan route:list --path=api出力例:
POST api/posts .................................................. posts.store › Api\PostController@store
GET|HEAD api/posts .................................................. posts.index › Api\PostController@index
GET|HEAD api/posts/{post} .......................................... posts.show › Api\PostController@show
PUT|PATCH api/posts/{post} .......................................... posts.update › Api\PostController@update
DELETE api/posts/{post} .......................................... posts.destroy › Api\PostController@destroy用途:
- API仕様書作成時
- フロントエンド開発者への情報共有
- モバイルアプリ開発時のエンドポイント確認
管理画面ルートのみ表示
php artisan route:list --path=admin特定のパスを除外
# API以外を表示
php artisan route:list --except-path=api
# 管理画面以外を表示
php artisan route:list --except-path=admin3-3. ルート名でフィルタ
特定の名前を含むルート
# "posts"を含むルート名
php artisan route:list --name=posts出力例:
POST api/posts .................................................. posts.store › Api\PostController@store
GET|HEAD api/posts .................................................. posts.index › Api\PostController@index
GET|HEAD api/posts/{post} .......................................... posts.show › Api\PostController@show
PUT|PATCH api/posts/{post} .......................................... posts.update › Api\PostController@update
DELETE api/posts/{post} .......................................... posts.destroy › Api\PostController@destroy用途:
- リソースコントローラーのルート確認
- 名前付きルートの一覧確認
route()ヘルパーで使えるルート名の確認
完全一致検索
php artisan route:list --name=posts.index3-4. ベンダールートの扱い
ベンダールートを除外(推奨)
php artisan route:list --except-vendor除外されるもの:
- Telescope
- Horizon
- Sanctum
- その他のパッケージが登録するルート
用途:
- 自分のアプリケーションのルートのみ確認
- ルート数が多い時の見やすさ向上
ベンダールートのみ表示
php artisan route:list --only-vendor用途:
- インストールしたパッケージのエンドポイント確認
- Telescope、HorizonのダッシュボードURL確認
3-5. 表示カラムのカスタマイズ
必要な情報だけ表示
php artisan route:list --columns=method,uri,name利用可能なカラム:
domain– ドメインmethod– HTTPメソッドuri– URIname– ルート名action– コントローラー・アクションmiddleware– ミドルウェア
ミドルウェアを含めて表示
php artisan route:list --columns=method,uri,name,middleware用途:
- 認証が必要なルートの確認
- CORS設定の確認
- レート制限の確認
3-6. JSON形式で出力
php artisan route:list --json出力例:
[
{
"domain": null,
"method": "GET|HEAD",
"uri": "api/posts",
"name": "posts.index",
"action": "App\\Http\\Controllers\\Api\\PostController@index",
"middleware": ["api", "auth:sanctum"]
},
{
"domain": null,
"method": "POST",
"uri": "api/posts",
"name": "posts.store",
"action": "App\\Http\\Controllers\\Api\\PostController@store",
"middleware": ["api", "auth:sanctum"]
}
]用途:
- スクリプトでの解析
- API仕様書の自動生成
- CI/CDでのルート検証
3-7. ソート機能
# メソッドでソート
php artisan route:list --sort=method
# URIでソート
php artisan route:list --sort=uri
# 逆順表示
php artisan route:list --reverse4. 出力結果の見方
各カラムの意味
GET|HEAD api/posts/{post} .......................................... posts.show › Api\PostController@show
^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
①HTTPメソッド ②URI ③ルート名 ④アクション① HTTPメソッド
GET|HEAD– GET・HEADリクエスト両方を受け付けるPOST– POSTリクエストのみPUT|PATCH– PUT・PATCHリクエスト両方DELETE– DELETEリクエストのみANY– 全HTTPメソッドを受け付ける
② URI(パス)
api/posts– 固定パスapi/posts/{post}– パラメータありapi/posts/{post?}– オプショナルパラメータapi/posts/{post}/comments/{comment}– ネストしたパラメータ
③ ルート名
posts.index– リソースルートの一覧posts.show– リソースルートの詳細login– カスタム名- (空欄) – 名前なしルート
④ アクション
PostController@index– コントローラー・メソッドClosure– クロージャ(無名関数)Illuminate\Routing\ViewController– ビューのみ
リソースルートのパターン
php artisan route:list --name=posts標準的なリソースルート:
GET|HEAD api/posts ......................................... posts.index › PostController@index
POST api/posts ......................................... posts.store › PostController@store
GET|HEAD api/posts/{post} .................................. posts.show › PostController@show
PUT|PATCH api/posts/{post} .................................. posts.update › PostController@update
DELETE api/posts/{post} .................................. posts.destroy › PostController@destroy対応するコード:
// routes/api.php
Route::apiResource('posts', PostController::class);ネストしたリソースルート
php artisan route:list --path=posts出力例:
GET|HEAD posts/{post}/comments ........................... posts.comments.index
POST posts/{post}/comments ........................... posts.comments.store
GET|HEAD posts/{post}/comments/{comment} ................. posts.comments.show
PUT|PATCH posts/{post}/comments/{comment} ................. posts.comments.update
DELETE posts/{post}/comments/{comment} ................. posts.comments.destroy対応するコード:
Route::resource('posts.comments', CommentController::class);5. 実務での使用シーン
シーン1: 404エラーのデバッグ
# ユーザーから「/api/posts/123が404になる」という報告
# 1. まずAPIルートを確認
php artisan route:list --path=api
# 2. posts関連を絞り込み
php artisan route:list --path=api/posts
# 3. 該当ルートの存在確認
# 出力から /api/posts/{post} があるか確認よくある原因:
- ルートが定義されていない
- HTTPメソッドが違う(GETで送るべきところをPOSTで送っている)
- パラメータ名の間違い(
{id}と{post}の違いなど)
シーン2: API仕様書の作成
# API仕様書のベース情報を取得
php artisan route:list --path=api --json > api-routes.jsonapi-routes.json の活用:
# jqコマンドで整形(Linuxの場合)
cat api-routes.json | jq '.[] | {method: .method, uri: .uri, name: .name}'
# Postmanのコレクション作成の元データとして使用
# OpenAPI (Swagger) 仕様書の自動生成シーン3: 認証が必要なルートの確認
# ミドルウェア情報を含めて表示
php artisan route:list --columns=method,uri,name,middleware --path=api出力例:
┌────────────┬─────────────────────┬───────────────┬────────────────────────┐
│ Method │ URI │ Name │ Middleware │
├────────────┼─────────────────────┼───────────────┼────────────────────────┤
│ GET│HEAD │ api/user │ │ api, auth:sanctum │
│ POST │ api/posts │ posts.store │ api, auth:sanctum │
│ GET│HEAD │ api/posts │ posts.index │ api │
└────────────┴─────────────────────┴───────────────┴────────────────────────┘用途:
- どのエンドポイントに認証が必要か確認
- フロントエンド開発時の認証フロー設計
- セキュリティ監査
シーン4: ルートの重複チェック
# 全ルートを確認
php artisan route:list --sort=uriチェックポイント:
# 同じURIに複数のメソッドが定義されているか確認
GET|HEAD api/posts/{id} ........................................ PostController@show
GET|HEAD api/posts/{post} ...................................... PostController@showByPost
# ↑ これは問題(パラメータ名が違うだけで同じパス)経験上のポイント:
ルートの重複は、開発初期段階で発見するのが最も重要です。本番環境で発覚すると、深刻なバグになります。
シーン5: マルチテナント環境での確認
# サブドメインごとのルート確認
php artisan route:list --domain=admin
# テナントドメインのルート確認
php artisan route:list --domain={tenant}ルート定義例:
// routes/web.php
Route::domain('admin.example.com')->group(function () {
Route::get('/', [AdminController::class, 'index']);
});
Route::domain('{tenant}.example.com')->group(function () {
Route::get('/', [TenantController::class, 'index']);
});シーン6: コードレビュー時の確認
# PRマージ前にルート変更を確認
# 現在のブランチのルート一覧を保存
php artisan route:list > routes-current.txt
# mainブランチに切り替え
git checkout main
# mainのルート一覧を保存
php artisan route:list > routes-main.txt
# 差分確認
diff routes-main.txt routes-current.txt自動化例(GitHub Actions):
name: Route Check
on: [pull_request]
jobs:
check-routes:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
- name: Install Dependencies
run: composer install
- name: Generate Route List
run: php artisan route:list --json > routes.json
- name: Upload Routes
uses: actions/upload-artifact@v3
with:
name: routes
path: routes.json
- name: Comment Routes on PR
run: |
# PRにルート一覧をコメント(スクリプト省略)シーン7: パフォーマンス確認
# ルート数の確認
php artisan route:list | wc -l
# 200行以上なら要注意(パフォーマンス低下の可能性)改善策:
// ルートキャッシュを有効化
php artisan route:cache
// 効果測定
php artisan route:list # キャッシュから高速に取得注意:
- ルートキャッシュ有効時は、クロージャベースのルートが使えない
- 開発環境では
route:clearでキャッシュ削除
シーン8: REST API設計の確認
# RESTful設計のチェック
php artisan route:list --path=api --columns=method,uri⭕️ 良い設計例:
GET api/posts # 一覧取得
POST api/posts # 新規作成
GET api/posts/{post} # 詳細取得
PUT api/posts/{post} # 全体更新
PATCH api/posts/{post} # 部分更新
DELETE api/posts/{post} # 削除❌ 悪い設計例:
GET api/get-posts # ❌ 動詞をURIに含めない
POST api/create-post # ❌ RESTfulではない
GET api/posts/delete/{id} # ❌ GETで削除は不適切6. よくあるエラーと対処法
エラー1: “Route [xxx] not defined”
// ビューで名前付きルートを呼び出し
編集
// エラー
Route [posts.edit] not defined.確認方法:
# posts.editという名前のルートが存在するか確認
php artisan route:list --name=posts.edit原因:
- ルート名のタイポ
- リソースルートで
editを除外している - ルート定義忘れ
解決策:
# 1. 存在する名前を確認
php artisan route:list --name=posts
# 2. routes/web.phpで確認
Route::resource('posts', PostController::class);
# または
Route::resource('posts', PostController::class)->except(['edit']); # editが除外されているエラー2: “Target class [Controller] does not exist”
確認方法:
# 該当するルートのアクションを確認
php artisan route:list原因:
- コントローラーの名前空間が間違っている
- コントローラーファイルが存在しない
解決策:
// routes/web.php
// ❌ 間違い
Route::get('/posts', 'PostController@index');
// ✅ 正しい(Laravel 8+)
use App\Http\Controllers\PostController;
Route::get('/posts', [PostController::class, 'index']);エラー3: “Method [xxx] does not exist”
# ルート一覧でアクションを確認
php artisan route:list --path=posts出力例:
GET|HEAD posts ........................................... PostController@list原因:
PostControllerにlistメソッドが存在しない
解決策:
// app/Http/Controllers/PostController.php
class PostController extends Controller
{
// メソッドを追加
public function list()
{
return view('posts.list');
}
}エラー4: 404エラーが出るのにroute:listに表示される
# ルートは存在する
php artisan route:list --path=api/posts
GET|HEAD api/posts ................................... PostController@index
# でも404になる
curl http://localhost/api/posts
# 404 Not Found原因候補:
- ルートキャッシュが古い
php artisan route:clear
php artisan route:cache- ミドルウェアで弾かれている
php artisan route:list --columns=method,uri,middleware --path=api
# middlewareカラムを確認- Webサーバーの設定問題
# Apacheの.htaccess確認
# Nginxのrewrite設定確認エラー5: ルート数が多すぎて表示が遅い
# 実行が遅い
php artisan route:list
# 5秒以上かかる...対処法:
# 1. ベンダールートを除外
php artisan route:list --except-vendor
# 2. 必要な部分だけフィルタ
php artisan route:list --path=api
# 3. ルートキャッシュを有効化
php artisan route:cache7. Laravel 12での変更点
新機能: より柔軟なフィルタリング
# 複数のパス条件を指定可能
php artisan route:list --path=api --path=admin
# 複数のメソッド条件
php artisan route:list --method=GET --method=POST表示形式の改善
より読みやすい表形式:
- Unicodeボックス文字を使用
- カラム幅の自動調整
- 長いURIの折り返し改善
パフォーマンス改善
- ルート数が多い場合の表示速度向上
- メモリ使用量の削減
JSON出力の拡張
php artisan route:list --json --columns=method,uri,name,middleware出力により詳細な情報:
[
{
"domain": null,
"method": "GET|HEAD",
"uri": "api/posts",
"name": "posts.index",
"action": "App\\Http\\Controllers\\Api\\PostController@index",
"middleware": ["api", "auth:sanctum"],
"parameters": {},
"bindings": {}
}
]8. チートシート(コピペ用)
基本コマンド
# 全ルート表示
php artisan route:list
# ベンダールート除外(推奨)
php artisan route:list --except-vendor
# 見やすい形式で表示
php artisan route:list --columns=method,uri,name,actionフィルタリング
# HTTPメソッドで絞り込み
php artisan route:list --method=GET
php artisan route:list --method=POST
# パスで絞り込み
php artisan route:list --path=api
php artisan route:list --path=admin
# パスを除外
php artisan route:list --except-path=api
# ルート名で絞り込み
php artisan route:list --name=posts
php artisan route:list --name=posts.index実務でよく使う組み合わせ
# API一覧(ベンダー除外)
php artisan route:list --path=api --except-vendor
# 認証必要なルート確認
php artisan route:list --columns=method,uri,name,middleware
# GETメソッドのAPI一覧
php artisan route:list --path=api --method=GET
# POSTメソッドのAPI一覧
php artisan route:list --path=api --method=POST
# JSON形式でエクスポート
php artisan route:list --json > routes.json
# API仕様書用データ
php artisan route:list --path=api --except-vendor --json > api-spec.jsonデバッグ用
# 特定ルートの詳細確認
php artisan route:list --name=posts.show --columns=method,uri,name,action,middleware
# 404エラー調査
php artisan route:list --path=問題のパス
# ルート重複チェック
php artisan route:list --sort=uri高度な使い方
# ミドルウェア確認(セキュリティ監査)
php artisan route:list --columns=uri,middleware --except-vendor
# ドメイン別ルート確認
php artisan route:list --domain=admin
# ルート数カウント
php artisan route:list --except-vendor | wc -l
# 差分チェック(CI/CD用)
php artisan route:list > routes.txt
git diff routes.txt9. 実務でのベストプラクティス
✅ DO(推奨)
- 開発開始時に必ず確認
# プロジェクトに参加したら最初に実行
php artisan route:list --except-vendor- API開発時は仕様書の元データとして活用
php artisan route:list --path=api --json > api-routes.json- 404エラー時は必ず確認
php artisan route:list --path=問題のパス- 定期的なルート監査
# 月1回程度、不要なルートがないか確認
php artisan route:list --columns=method,uri,name,action❌ DON’T(非推奨)
- ルート一覧を見ずに404対応しない
# 悪い例: いきなりコード修正
# 良い例: まずroute:listで確認
php artisan route:list- ベンダールートを含めたまま確認
# 見づらい
php artisan route:list
# 推奨
php artisan route:list --except-vendor- 本番環境で頻繁に実行
# ルートキャッシュ有効時は不要
# 必要なら開発環境で確認まとめ
覚えておくべきポイント
✅ route:listの重要性:
- ルーティング設計の可視化
- デバッグの第一歩
- API仕様書作成の基礎データ
✅ 便利なオプション:
--except-vendor– ベンダールート除外--path=api– API一覧--columns=method,uri,name– 必要な情報だけ表示--json– スクリプト処理用
✅ 実務での活用:
- 404エラーのデバッグ
- API仕様書の作成
- セキュリティ監査
- コードレビュー
開発経験から
実際にあったトラブル例:
- ケース1: 404エラーの原因不明
- 状況: 「このURLが動かない」
- 原因: HTTPメソッドの間違い(GETのつもりがPOST)
- 対策:
route:listで確認すれば一発
- ケース2: API仕様書との不一致
- 状況: フロントエンドから「仕様と違う」
- 原因: ドキュメントが古い
- 対策:
route:list --jsonで最新情報を常に共有
- ケース3: セキュリティホール
- 状況: 認証なしでアクセスできてしまった
- 原因: ミドルウェアの設定漏れ
- 対策:
route:list --columns=uri,middlewareで定期監査
route:listは、開発者の必須ツールです。毎日使って、ルーティングを完全に把握しましょう。
あなたにおすすめの記事
よく使うコマンド:
Source
10.x
framework/src/Illuminate/Foundation/Console/RouteListCommand.php at 11.x · laravel/framework
Laravel is a web application framework with expressive, elegant syntax. - laravel/framework
11.x
framework/src/Illuminate/Foundation/Console/RouteListCommand.php at 11.x · laravel/framework
Laravel is a web application framework with expressive, elegant syntax. - laravel/framework
12.z
framework/src/Illuminate/Foundation/Console/RouteListCommand.php at 11.x · laravel/framework
Laravel is a web application framework with expressive, elegant syntax. - laravel/framework

