在 Linux 上部署 Laravel 出现 404,通常不是代码问题,而是服务器配置或权限问题。下面按最常见原因逐一排查:
try_filesLaravel 依赖 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;
}
❌ 错误:
root /var/www/laravel;
✅ 正确:
root /var/www/laravel/public;
.htaccess 问题(Apache)如果是 Apache,确保:
mod_rewritesudo a2enmod rewrite
sudo systemctl restart apache2
AllowOverride All<Directory /var/www/laravel/public>
AllowOverride All
</Directory>
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。
getenforce
如果是 Enforcing:
sudo setsebool -P httpd_read_user_content 1
sudo restorecon -R /var/www/laravel
APP_URL=http://your-domain.com
publictry_files 是否存在php artisan serve 正常如果你愿意,可以把 Nginx / Apache 配置 + 报错日志 发出来,我可以直接帮你定位是哪一条导致的 404。