如何修复Laravel应用找不到的Nginx 404?

时间:2018-08-16 03:31:47

标签: php laravel nginx

我的所有路线都找不到404。如果我访问localhost/mylaravel,则可以打开Laravel页面,但如果访问localhost/mylaravel/login,则显示404未找到页面。如果我在/ home上更改路线home并访问它,则找不到404。

我正在使用Laravel Framework 5.6.33

这是我的路线文件:

<?php

Route::get('/', function () {
    return view('home/home');
});
Route::get('/login', function () {
    return view('login/login');
});

这是我在/etc/nginx/sites-available/default上的nginx配置

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name localhost;
    charset utf-8;
    root /var/www/html/;
    index index.php index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location /mylaravel/ {
         try_files $uri $uri/ /index.php?$query_string;
        }

    location ~ \.php$ {
    try_files $uri $uri/ =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass    unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_index   index.php;
    include fastcgi_params;
    }

    location ~ /\. {
        deny all;
    }

    location ~* ^.+\.(css|js|jpg|jpeg|gif|png|txt|ico|swf|xml|woff|woff2|ttf|mp3|svg|csv|xls|xlsx|eot|otf)$ {
    access_log off;
    expires modified +90d;
    }
}

1 个答案:

答案 0 :(得分:1)

您的错误是在/etc/nginx/sites-available/default

以下行:

root /var/www/html/;

应该是

root /var/www/html/public;

您的webroot应该设置为Laravel项目内的公共目录,因为这是框架的入口点