thinkphp5.0.18伪静态需三处对齐:服务器重写路径、框架入口定位(public/目录下.htaccess)、path_info解析逻辑;漏任一环即404或参数丢失。

ThinkPHP5.0.18 伪静态配置不是“写个规则就能用”,而是三处必须对齐:服务器重写路径、框架入口定位、PATH_INFO 解析逻辑。漏掉任意一环,都会 404 或参数丢失。
Apache 下 .htaccess 放错位置就全白配
很多人把 .htaccess 放在项目根目录(含 application/ 那层),但 ThinkPHP5.0.18 默认入口是 public/index.php,所以 .htaccess 必须放在 public/ 目录下。
- 检查 Apache 是否启用
rewrite_module:Linux 下运行a2enmod rewrite,Windows 用 phpEnv 的「模块管理」勾选它 - 确认虚拟主机配置中对应
public/目录的<directory></directory>块存在且含AllowOverride All -
.htaccess内容用这个(注意末尾是index.php?/$1,不是index.php/$1):<ifmodule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </ifmodule> - 文件权限设为
644,不能是600(Apache 读不到)或777(不安全)
Nginx 报 “URL pathinfo not supported” 就是 PATH_INFO 没传过去
ThinkPHP5.0.18 依赖 $_SERVER['PATH_INFO'] 解析路由,但 Nginx 默认不传递它。只加 try_files 不够,必须补全 fastcgi_param。
- 在
location ~ \.php$块里,确保有这行:fastcgi_param PATH_INFO $fastcgi_path_info;
-
location /块必须指向/public/index.php,不是/index.php:location / { try_files $uri $uri/ /public/index.php?$query_string; } - 宝塔用户务必进「网站设置 → 运行目录」选
/public,否则$_SERVER['DOCUMENT_ROOT']错位,runtime/写入失败,后续所有缓存、日志都崩
框架里 url_route_on = true 不开,服务器配得再对也 404
ThinkPHP5.0.18 默认关闭路由,光靠服务器重写没用,框架必须主动解析请求路径。
- 打开
config/app.php,确认以下三项已启用:'url_route_on' => true, 'pathinfo_depr' => '/', 'url_html_suffix' => 'html', // 可设为空字符串 '' 支持任意后缀
- 不要设
'url_route_must' => true,除非你真写了全部路由;默认 false 更稳妥 - 如果用了子目录部署(如
https://example.com/shop/),.htaccess要加RewriteBase /shop/,Nginx 的try_files也要对应调整路径前缀
public/ 目录层级被忽略、PATH_INFO 没手动补全、或者宝塔里「运行目录」还停在根目录。这三个点对不上,其他全白搭。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











