You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.5仅根路由("/")可用,其余路由报404错误求助

排查Laravel 5.5在Ubuntu 16.04上的404问题

看你描述的情况,项目在其他环境正常,克隆后出现404,大概率是当前服务器的配置细节没踩对,我给你梳理几个最常见的排查点:

1. 修正Apache站点根目录指向

你提到请求URL里带了/public/,这几乎可以确定是Apache站点根目录设错了——Laravel的入口文件在public/index.php,必须把站点根指向public子目录,而不是项目根文件夹。

找到你的Apache站点配置文件(一般在/etc/apache2/sites-available/your-site.conf),修改成这样:

<VirtualHost *:80>
    ServerName your-domain-or-ip
    DocumentRoot /var/www/your-project-path/public  # 重点:指向public目录

    <Directory /var/www/your-project-path/public>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/your-site-error.log
    CustomLog ${APACHE_LOG_DIR}/your-site-access.log combined
</VirtualHost>

修改后重启Apache:sudo systemctl restart apache2

2. 确保AllowOverride All生效

就算你启用了rewrite模块,如果目录的AllowOverride设为None,.htaccess里的规则根本不会生效。上面的配置里已经加了这个设置,但如果用的是默认的000-default.conf,一定要把对应目录的AllowOverride改成All。

另外再确认rewrite模块真的启用了:sudo a2enmod rewrite,如果之前没开,重启Apache生效。

3. 修复Laravel目录权限

Ubuntu下Apache的运行用户是www-data,必须让它能读写storage和bootstrap/cache目录,不然可能导致路由加载异常:

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

4. 清除项目缓存

克隆的项目可能残留了旧环境的缓存,执行下面的命令清空:

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

这能确保新的.env配置和路由规则完全生效。

5. 检查.env的APP_URL

确保APP_URL和你实际访问的域名/IP一致,比如:

APP_URL=http://your-domain-or-ip

虽然这个不直接影响路由,但某些场景下会间接导致URL生成异常。

如果以上步骤都试了还是不行,把.env里的APP_DEBUG改成true,打开调试模式,看看有没有更具体的错误提示——单纯的404太模糊,调试信息能帮你定位到更细节的问题。

内容的提问来源于stack exchange,提问作者Santiago Helguera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:51:41