Yii框架安装后访问出现404怎么办_Nginx和Apache重写规则配置【排查】

夜枫大大_9497

夜枫大大_9497

2026-04-09

841人浏览

原创

Yii应用Nginx下404主因是location未匹配index.php或PHP-FPM传递异常;需配置try_files含$args、SCRIPT_FILENAME用$realpath_root、启用fastcgi_split_path_info并正确设置PATH_INFO。

yii框架安装后访问出现404怎么办_nginx和apache重写规则配置【排查】

Yii 应用在 Nginx 下返回 404,rewrite 规则没生效

绝大多数情况是 location 块没匹配到 index.php,或者 PHP-FPM 没正确传递请求。Nginx 默认不支持 PATH_INFO,而 Yii(尤其 2.x)依赖它来解析路由。

  • 确认 location / 块里有 try_files $uri $uri/ /index.php?$args; —— 缺少 $args 会导致 GET 参数丢失,路由解析失败
  • 确保 location ~ \.php$ 块中设置了 fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;,而不是用 $document_root(符号链接场景下会出错)
  • 检查是否启用了 fastcgi_split_path_info:Yii 需要它把 /index.php/user/login 拆成脚本路径和 PATH_INFO;没配就会直接 404

示例关键片段:

location / {
    try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_pass 127.0.0.1:9000;
}

Apache 的 .htaccess 不起作用,访问子路由仍是 404

不是规则写错了,而是 Apache 根本没读取或执行它 —— 常见于虚拟主机未开启 AllowOverride All 或 mod_rewrite 未启用。

  • 运行 a2enmod rewrite(Debian/Ubuntu)或检查 httpd.conf 中 LoadModule rewrite_module 是否取消注释
  • 在虚拟主机配置里确认 下有 AllowOverride All,仅 AllowOverride None 会让 .htaccess 完全失效
  • Yii 2.x 的默认 .htaccess 依赖 mod_env 设置环境变量(如 ENV=prod),缺失时可能静默失败,建议先临时删掉 SetEnv 行测试

重写规则看似生效,但后台登录页能打开、其他路由仍 404

这说明入口脚本 index.php 能执行,但 Yii 自身的 URL 解析卡住了 —— 很可能是 urlManager 配置或 Web 服务器传入的原始路径被截断了。

Yii Framework 2.0.51
Yii Framework 2.0.51

Yii Framework 2.0.51 官方 Basic 应用模板,适合旧项目兼容、升级验证和开发测试。

下载
  • 检查 urlManager 的 enablePrettyUrl 是否为 true,且 showScriptName 设为 false(否则所有 URL 必须带 index.php)
  • 在 index.php 开头加一行 var_dump($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME']); die;,看实际传进来的路径是不是被 Nginx/Apache 二次处理过(比如多了一层 /web)
  • 如果项目部署在子目录(如 https://example.com/myapp/),baseUrl 和 scriptUrl 必须显式配置,否则生成的链接和路由匹配都会错位

本地开发用内置服务器(php -S)跑 Yii,一访问就 404

PHP 内置服务器不支持 Apache/Nginx 那套重写逻辑,必须手动指定路由脚本,否则所有非静态资源都 404。

  • 启动命令必须带路由文件参数:php -S localhost:8000 router.php,其中 router.php 是你自己写的转发逻辑
  • Yii 官方推荐的 router.php 内容极简:if (preg_match('/\.(?:png|jpg|jpeg|gif|css|js|woff2?|eot|ttf|svg)$/', $_SERVER["REQUEST_URI"])) { return false; } else { include __DIR__ . '/index.php'; }
  • 注意:不能直接 php -S localhost:8000 index.php,那样只响应根路径,子路由全挂

PATH_INFO 在内置服务器里行为不稳定,建议开发阶段优先用 Nginx 或 Docker 环境,避免被这个细节反复绊倒

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

yii yii框架

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

423

5

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3987

6

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

2023.08.04

6805

6

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

601

5

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.07.09

1516

5

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

2024.08.07

3978

3

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

122

12

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

537

23

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

2026.03.16

179

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii Framework 2.0 API 官方文档
Yii Framework 2.0 API 官方文档

共0课时 | 0人学习

Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.3万人学习