備忘録として残します。
laravelをインストール後にルーティングの確認をしたかったため、とりあえず試しにphpinfo()を記述したファイルを下記に設置。
/resources/views/phpinfo.blade.php
あとは下記のファイルにルーティングを追加してphpinfo.blade.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が使用できないサーバというのは稀だと思うので、あまり気にする必要はないかと。(今回は開発用環境の構築中に出くわした問題なので。)
以上です。