Laravel项目迁移开发服务器后访问登录页提示URL未找到如何解决
Laravel部署Apache路由404问题解决方案
- 第一步:确认Apache rewrite模块已启用
多数系统默认安装Apache时不会主动开启rewrite模块,Laravel路由依赖该模块实现伪静态,可执行对应命令开启:
Debian/Ubuntu系统执行:a2enmod rewrite,完成后重启Apachesystemctl restart apache2
CentOS/RHEL系统编辑httpd.conf,确认LoadModule rewrite_module modules/mod_rewrite.so行前没有注释符#,保存后重启Apachesystemctl restart httpd - 第二步:确认public目录下存在完整.htaccess文件
复制项目时很容易漏掉以.开头的隐藏文件,对比生产环境项目public目录下的.htaccess文件,确认开发环境对应位置的文件内容一致、权限可读,Laravel默认的.htaccess负责处理路由重写逻辑,缺失会直接导致非根路径路由404。 - 第三步:确认站点配置的DocumentRoot指向项目public目录
检查Apache的站点配置文件(通常存放在/etc/httpd/conf.d/或/etc/apache2/sites-available/目录下),DocumentRoot参数必须填写到Laravel项目的public文件夹绝对路径,示例:DocumentRoot "/var/www/html/你的项目名称/public",如果指向项目根目录或上层目录,就会出现路由无法匹配的404问题,修改完成后需要重启Apache生效。 - 第四步:验证重写规则生效状态
临时尝试访问带index.php前缀的路径:http://你的访问地址/index.php/xxxx/login,如果可以正常打开登录页,可确定是rewrite规则未正常生效,回到前两步排查即可。 - 第五步:检查目录权限配置
确认Apache运行用户(通常为apache或www-data)对项目目录有可读权限,Laravel要求storage和bootstrap/cache目录有可写权限,可执行命令调整:chmod -R 755 你的项目路径,再单独给两个目录赋权:chmod -R 775 你的项目路径/storage 你的项目路径/bootstrap/cache,同时将两个目录的所属用户调整为Apache运行用户,避免权限拦截。
内容的提问来源于stack exchange,提问作者voxire
相关产品推荐
相关产品推荐

