search
LoginSignup
59
Help us understand the problem. What are the problem?

posted at

updated at

【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が使用できないサーバというのは稀だと思うので、あまり気にする必要はないかと。(今回は開発用環境の構築中に出くわした問題なので。)

以上です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
59
Help us understand the problem. What are the problem?