Hi,请  登录  或  注册

Laravel 项目 404 问题排查与伪静态配置记录

今天在部署一套海外源码时,访问首页正常,但所有二级路由全部返回 404。确认程序本身无报错后,基本可以判断是 伪静态未生效导致路由无法转发到入口文件。Laravel 对 URL 重写依赖较强,如果服务器未正确转发请求,就会出现页面不存在的问题。

在宝塔或本地环境中,如果没有自动配置伪静态规则,需要手动根据服务器类型进行处理,下面分别记录 Apache 与 Nginx 的常用配置方式。

Apache 环境处理方式

Apache 环境下,Laravel 默认通过 .htaccess 文件进行重写控制,只需确认 public 目录下存在以下内容即可:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

配置完成后重启 Apache 服务,再访问路由即可恢复正常。

Nginx 环境处理方式

Nginx 不读取 .htaccess,需要在站点配置文件中引入重写规则。可以在站点的 server 块中加入:

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

如果环境使用独立规则文件方式,也可以在站点目录下新建 nginx.htaccess,并在配置中 include 该文件:

include /站点路径/public/nginx.htaccess;

nginx.htaccess 内容示例:

try_files $uri $uri/ /index.php?$query_string;
if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php?s=$1 last;
    break;
}

修改完成后记得 重载 Nginx 配置并重启服务,否则规则不会生效。

Laravel 项目出现大面积 404 时,优先检查伪静态是否正确生效,比反复排查程序代码更高效。不同环境处理方式差异较大,部署时建议同步确认入口路径、重写规则与目录权限,避免后续联调阶段频繁踩坑。本次问题通过补齐重写规则即可解决,记录备查。

 

文章名称:Laravel 项目 404 问题排查与伪静态配置记录
除非特别注明,本站所有文章均为原创,转载请注明出处:264玫瑰资源库
部分教程资源来源于互联网,请谨慎辨别广告内容,避免上当受骗!

评论 抢沙发

登录

找回密码

注册