thinkphp 5.1.31 的伪静态规则不由框架定义,需在 web 服务器配置:nginx 环境下写入 if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } 并重载;apache 环境下在根目录 .htaccess 中配置 rewriteengine on 及两条 rewritecond 条件与 rewriterule;同时须设 'url_model' => 2 并确保 index.php 在站点根目录。

ThinkPHP 5.1.31 的伪静态规则不写在框架里
它根本不在 config.php、route.php 或任何 PHP 文件中定义。TP5.1.31 本身不生成或管理服务器级重写规则——它只负责解析被 Web 服务器(Nginx/Apache)转发过来的请求。所谓“伪静态”,实际是靠 Web 服务器把形如 /user/profile/123 的请求,内部重写成 /index.php?s=/user/profile/123 这种带 s= 参数的形式,再交给 TP 处理。
Nginx 环境:规则必须写在 server 块或宝塔「伪静态」栏
如果你用 Nginx(包括宝塔面板),伪静态规则要落在 Nginx 配置层面:
- 宝塔用户:进「网站」→「设置」→「伪静态」,清空原有内容,粘贴以下标准 TP5 规则(注意不是 TP6 的
/public/index.php/$1):if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } - 手动改 Nginx 配置:找到对应站点的
server块,在location /内添加上述if块;别漏掉break;或last;,否则可能循环重写 - 确认入口文件路径:TP5.1 默认入口是项目根目录下的
index.php,不是public/index.php;若你把public/设为站点根目录,则规则要改成rewrite ^(.*)$ /index.php?s=$1 last;(路径不变,但前提是index.php确实在根目录) - 改完必须重载:宝塔点「保存」后一定要点「重载配置」;Nginx 命令行执行
nginx -s reload,只改配置不重载等于没动
Apache 环境:规则写在 .htaccess,且需开启 mod_rewrite
Apache 用户不能套用 Nginx 规则,必须用 .htaccess:
- 确保站点根目录存在
.htaccess文件(不是htaccess或.htaccess.txt) - 内容必须包含启用重写引擎和两条关键条件:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L] - 检查 Apache 是否加载
mod_rewrite:运行a2enmod rewrite(Debian/Ubuntu)或确认httpd.conf中有LoadModule rewrite_module modules/mod_rewrite.so - AllowOverride 必须设为 All:虚拟主机配置里
<directory></directory>块内要有AllowOverride All,否则 .htaccess 不生效
为什么改了规则还是 404?重点查这三处
TP5.1.31 伪静态失效,90% 情况和框架版本无关,而是环境链断在下面环节:
-
index.php文件是否真在你配置的 Web 根目录下?比如宝塔把站点根目录设成了/www/wwwroot/myapp/,但你的index.php其实藏在/www/wwwroot/myapp/public/里——那 Nginx 规则里的/index.php就根本找不到 - URL 模式是否设为兼容模式:TP5.1 默认
'url_model' => 1(PATHINFO),但伪静态规则走的是s=参数,所以必须在config/app.php里显式设为'url_model' => 2,否则框架不认s=参数 - PHP-FPM 是否传递了
PATH_INFO:Nginx 规则重写成功后,PHP 要能从$_SERVER['PATH_INFO']或$_GET['s']里拿到原始路径;如果$_GET['s']为空,大概率是 FastCGI 参数没配全,需检查 Nginx 的fastcgi_param SCRIPT_FILENAME和fastcgi_param PATH_INFO是否正确设置
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











