温馨提示×

linux laravel为何找不到路由

小樊
57
2026-10-07 03:20:56
栏目: 智能运维

在 Linux 上运行 Laravel 时“找不到路由(404 / Route not found / 空白页)”是非常常见的问题,通常不是代码写错,而是环境或配置导致的。下面按最常见原因 → 排查方法给你列一遍。


一、最常见原因(90% 在这里)

1️⃣ Web 服务器没走 index.php

Laravel 必须通过 public/index.php 入口访问。

❌ 错误访问方式:

http://ip/项目根目录

✅ 正确方式:

http://域名 或 http://ip/public

Nginx 示例(必须):

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

Apache 需开启:

AllowOverride All
mod_rewrite

2️⃣ 路由缓存问题(改了路由但没生效)

php artisan route:clear
php artisan config:clear
php artisan cache:clear

如果用了:

php artisan route:cache

改路由后必须重新执行。


3️⃣ .env 没配置或没生效

cp .env.example .env
php artisan key:generate

否则可能出现:

  • 路由正常但页面异常
  • 重定向错误
  • 404

二、Linux 权限问题(非常常见)

storage / bootstrap 没写权限

chown -R www-data:www-data /var/www/laravel
chmod -R 755 storage bootstrap/cache

不然后台报错但页面直接 404。


三、路由本身问题

1️⃣ 路由写错文件

  • web.php → 浏览器访问
  • api.php → 需 /api/xxx

例如:

// routes/web.php
Route::get('/test', fn () => 'ok');

访问:

/test

2️⃣ 路由存在但你访问方式不对

Route::post('/login', ...)

用浏览器直接访问 → 404


四、快速自检命令(强烈建议)

php artisan route:list

✅ 能看到路由 → 代码没问题
❌ 看不到 → 路由文件没加载


五、Linux + Nginx 最小可用示例

server {
    root /var/www/laravel/public;
    index index.php;

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

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

六、你可以这样告诉我,我帮你精确定位

请贴出:

  1. 访问的 URL
  2. Nginx / Apache 配置
  3. php artisan route:list 输出
  4. 报错信息(浏览器 / storage/logs)

我可以直接帮你指出是哪一步错了。

0 踩