Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
53
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

【Laravel】ルーティングをしているはずが404エラー?

備忘録として残します。

laravelをインストール後にルーティングの確認をしたかったため、とりあえず試しにphpinfo()を記述したファイルを下記に設置。
/resources/views/phpinfo.blade.php

あとは下記のファイルにルーティングを追加してphpinfo.blade.phpを紐づけ。

/routes/web.php

// http://任意のサーバ名/dev/phpinfoにアクセスすればOK
Route::get('dev/phpinfo', function(){
        // これでルーティング完了。
    return view('phpinfo');
});

しかし、ルーティングできていない。アクセスしても404エラーになる。
うんーこの。
え、ルーティングしたよな?
コマンドで確認

C:\Laravelプロジェクトのパス>php artisan route:list
+--------+----------+-------------+------+---------+--------------+
| Domain | Method   | URI         | Name | Action  | Middleware   |
+--------+----------+-------------+------+---------+--------------+
|        | GET|HEAD | /           |      | Closure | web          |
|        | GET|HEAD | api/user    |      | Closure | api,auth:api |
|        | GET|HEAD | dev/phpinfo |      | Closure | web          |
+--------+----------+-------------+------+---------+--------------+

あるよなー
うーんこの。

色々調査し、キャッシュかな?と思い、 php artisan route:clear といった方法も試したが、うまくいかなかった。

バーチャルホストの設定を見直す。
どうやら AllowOverride All が記載されていないのが原因らしい。

<Virtualhost "サーバ名:80">
  ServerName サーバ名
  Documentroot "ドキュメントルート"
  <Directory "ドキュメントルート">
     # 本件とは関係ないがRequire all granted はドキュメントルートに関してアクセスを許可するという意味なので、下記の設定したが403エラーが表示されるのであれば設定する。
     Require all granted

     # AllowOverride All は.htaccessの使用を許可するという設定です。
     AllowOverride All
  </Directory>
</Virtualhost>

上記の設定でうまく無事ルーティング通り画面遷移ができました。
しかし、この事実からLaravelの弱点を裏付けることがひとつあり、
Laravelとは.htaccessの使用が許可されていない場合は、導入することができないフレームワークということになります。
もちろん.htaccessが使用できない環境というのは少ないです。(今回は開発用環境の構築中に出くわした問題なので。)

意外と苦戦する人がいるかもなので共有しました。
今回はXAMPP 5.6.32 で発生したため、同環境の人は再現すると思います。
また、httpd.confではなく別ファイルのバーチャルホストの設定に記載しましたが、AllowOverride All くらいは共通の httpd.conf に記載してもいいかもです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
53
Help us understand the problem. What are the problem?