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

Laravel CRM从主域名迁移至三级域名后遇404错误求助

Laravel CRM迁移后404错误的排查要点

1. 服务器根目录与重写规则问题

  • Apache环境:确认新主机的web根目录是否指向Laravel项目的public文件夹——很多主机默认指向网站根目录,但Laravel必须把public设为web入口,否则路由无法解析,直接返回404。同时检查mod_rewrite模块是否开启,public目录下的.htaccess文件是否完整复制过来。
  • Nginx环境:必须配置正确的server块规则,把所有请求转发到public/index.php,示例配置片段:
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    没配置这条规则的话,Nginx会直接找不到对应文件,返回404。

2. 旧缓存未清除

迁移后Laravel保留的旧缓存(路由、配置、视图)还带着旧域名的信息,必须清除:

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

如果没法用SSH执行命令,就手动删除storage/framework/cache、storage/framework/routes、storage/framework/config、storage/framework/views下的所有文件。

3. .env配置细节

  • 确认APP_URL严格设置为https://crm.site.it,不要加末尾斜杠。
  • 检查APP_ENV是否为production,虽然环境模式不直接导致404,但生产环境下缓存机制会影响路由加载。

4. 数据库URL替换的完整性

直接字符串替换旧URL时,如果遇到序列化的数据(比如存在text字段里的数组/对象),会破坏序列化格式,导致Laravel读取数据异常,间接引发404。

  • 普通字段可以用SQL替换:
    UPDATE 表名 SET 字段名 = REPLACE(字段名, 'https://crmsite.com', 'https://crm.site.it') WHERE 字段名 LIKE '%https://crmsite.com%';
    
  • 序列化字段需要用PHP脚本处理(需在Laravel环境下运行):
    $models = 对应模型::all();
    foreach ($models as $model) {
        $data = unserialize($model->目标字段);
        if (is_array($data)) {
            $data = str_replace('https://crmsite.com', 'https://crm.site.it', $data);
            $model->目标字段 = serialize($data);
            $model->save();
        }
    }
    

5. 文件权限问题

Laravel需要storage和bootstrap/cache目录有写入权限,否则缓存无法生成、路由无法加载,导致404。设置权限的命令:

chmod -R 755 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache # 根据服务器实际用户调整

内容的提问来源于stack exchange,提问作者Federica Solare

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:46:11