温馨提示×

linux laravel为何404

小樊
47
2026-09-25 11:44:50
栏目: 智能运维

在 Linux 上部署 Laravel 出现 404,通常不是代码问题,而是服务器配置或权限问题。下面按最常见原因逐一排查:


一、Nginx / Apache 未重写 URL(最常见)

✅ Nginx 必须配置 try_files

Laravel 依赖 index.php 入口,Nginx 默认不会自动转发。

正确 Nginx 配置示例:

server {
    listen 80;
    server_name example.com;
    root /var/www/laravel/public;

    index index.php index.html;

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

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

❌ 错误示例(会导致 404):

location / {
    root /var/www/laravel;
}

二、Web 根目录指错了

❌ 错误:

root /var/www/laravel;

✅ 正确:

root /var/www/laravel/public;

三、.htaccess 问题(Apache)

如果是 Apache,确保:

  1. 启用了 mod_rewrite
sudo a2enmod rewrite
sudo systemctl restart apache2
  1. AllowOverride All
<Directory /var/www/laravel/public>
    AllowOverride All
</Directory>

四、storage / bootstrap 权限问题

Laravel 需要写权限:

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

五、没清缓存(改配置后)

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

六、路由确实不存在

php artisan route:list

访问的 URL 不在列表中也会 404。


七、SELinux(CentOS / Rocky / Alma)

getenforce

如果是 Enforcing:

sudo setsebool -P httpd_read_user_content 1
sudo restorecon -R /var/www/laravel

八、.env 未配置或 APP_URL 错

APP_URL=http://your-domain.com

快速自检清单 ✅

  • [ ] root 是否指向 public
  • [ ] Nginx try_files 是否存在
  • [ ] 是否 php artisan serve 正常
  • [ ] 路由是否存在
  • [ ] 权限是否正确
  • [ ] 是否清缓存

如果你愿意,可以把 Nginx / Apache 配置 + 报错日志 发出来,我可以直接帮你定位是哪一条导致的 404。

0 踩