发布于2026-07-10 阅读(0)
扫一扫,手机访问
页面404了?伪静态规则明明写对了,路由也配了,还是跳转不过去?别急着怀疑规则本身——大概率是中间某个环节没打通。配伪静态这事儿,说白了就是让URL变得好看,但好看的前提是几个关键点得同时到位:框架路由得开、Web服务器得认、PATH_INFO或s参数得传进去。哪一环断了,都是404。

伪静态依赖于路由系统来解析URL。如果url_route_on被关掉了,那么所有通过重写过来的请求,框架都会当成非法路径,直接拒之门外。
config/app.php(TP6)或config.php(TP5)中是否为'url_route_on' => true。route/目录下有定义好的路由规则。如果route.php是空的,即使开关打开了,路由也照样不干活。'url_route_must' => true这个“严格模式”,那么每个访问路径都要在路由表里显式注册,否则一律404。新手在这里踩坑的概率相当高。index.php/控制器/方法 就永远 404很多Nginx伪静态配置只写了重写规则,却漏掉了最关键的fastcgi_param PATH_INFO。结果ThinkPHP只收到index.php这个文件名,根本拿不到后面的路径信息,自然不知道怎么处理。
location ~ \.php$块里加上这两行:fastcgi_split_path_info ^(.+\.php)(/.+)$;fastcgi_param PATH_INFO $fastcgi_path_info;
/index.php?s=xxx这种传参模式(这也是推荐的做法),PATH_INFO就不是必须的。但前提是重写规则里必须确保把完整的路径塞进s参数中。.htaccess 文件权限和生效位置经常出错.htaccess文件不是放上去就能生效的。它受Apache主配置的约束,而且对文件位置极其敏感。
AllowOverride All。如果设置的是None,那.htaccess文件就完全被忽略了。.htaccess文件必须放在项目根目录,也就是和index.php同级。差一层,规则就失效。.htaccess,可能会带有BOM头或者换行符异常。上传后用FTP工具(如WinSCP)以UTF-8无BOM格式重存一遍是必须的操作。RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]。注意末尾的PT,缺了它,重写后的路径不会继续交给PHP处理。web.config 容易漏掉 rewrite 模块检测IIS默认不安装URL Rewrite模块。所以光配web.config是没用的。
UrlRewriteModule。没有的话,就去微软官网下载安装。web.config里的规则必须放在下,而且的name不能重复。真正卡住人的地方,往往不是规则写得多复杂,而是PATH_INFO没传、AllowOverride没开,或者url_route_on还关着。这些点不逐一验证,光调规则就是在黑盒里拧螺丝,白费力气。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8