##1.現象
ルーティングの記述はlaravelの/routes/web.phpに確かに存在しているのに
404 Not Found nginx/1.17.8になってしまう。
ルーティングはこちら
routes/web.php
Route::get('/index', 'HelloController@index');
php artisan route:list
でみてもあるんだよなあ
##2.バージョン
PHP7.2
laravel5.8
docker使用
##3.解決方法
どうやらdefault.confのnginxの設定がうまく行ってなさそう
default.conf
server {
listen 80;
index index.php index.html;
root /var/www/public;
location / {
root /var/www/public;
index index.html index.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
試したところ、以下ではルートディレクトリ"/"しか表示できなかった。
この以下のlocation部分を変更してみる
location / {
root /var/www/public;
index index.html index.php;
}
以下のように変更してファイルやディレクトリを探して、なければ、
/index.php$query_stringで内部リダイレクトさせてみる
location / {
try_files $uri $uri/ /index.php?$query_string;
}
こうしました。
default.conf
server {
listen 80;
index index.php index.html;
root /var/www/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
変更後再度、docker-compose up -dを実行
表示できました〜
###4.参考
他の方が詳しい記事を書いていました。
https://qiita.com/k_hoso/items/33ccb5e02e73a244ed31
https://teratail.com/questions/182086