今天在部署一套海外源码时,访问首页正常,但所有二级路由全部返回 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 时,优先检查伪静态是否正确生效,比反复排查程序代码更高效。不同环境处理方式差异较大,部署时建议同步确认入口路径、重写规则与目录权限,避免后续联调阶段频繁踩坑。本次问题通过补齐重写规则即可解决,记录备查。














![[源码分享] 创胜系列定制版本嘉年华房卡源代码【开发引擎Cocos Creator2.4.3】-](https://www.264rose.com/wp-content/uploads/2024/10/c4ca4238a0b9238-10.jpg)




