ThinkPHP在IIS下需用web.config(IIS 7+)或httpd.ini(IIS 6),前者推荐:必须安装URL Rewrite模块、配置正确重写规则至index.php?s=、并设url_model=2;后者已淘汰,兼容性差。

ThinkPHP 在 IIS 下不支持 .htaccess,需使用 httpd.ini(适用于 IIS 6 及早期 ISAPI Rewrite 环境),但注意:IIS 7+ 推荐用 web.config(URL Rewrite 模块),httpd.ini 已基本淘汰。若你确实在用老环境(如 IIS 6 + ISAPI_Rewrite v2/v3),规则如下:
适用于 ThinkPHP 5.x / 6.x 的 httpd.ini 规则(ISAPI_Rewrite v3)
将以下内容保存为网站根目录下的 httpd.ini 文件(注意文件名必须全小写):
[ISAPI_Rewrite] RewriteRule ^(.*)\?(.*)$ /index\.php\?$2 [I,L] RewriteRule ^(.*)$ /index\.php [I,L]
说明:
- 第一行匹配带查询参数的 URL(如
/user?id=1),将其转发给index.php并保留参数; - 第二行匹配所有其他请求(如
/user/list),统一入口到index.php; -
[I]表示忽略大小写,[L]表示终止后续规则; - 确保
index.php在 Web 根目录,且 ThinkPHP 的APP_DEBUG关闭或正确配置路由。
ThinkPHP 3.2 的兼容写法(更严格路径过滤)
为避免静态资源(CSS/JS/IMG)被误转发,可加排除规则:
[ISAPI_Rewrite] # 不处理真实存在的文件和目录 RewriteCond Host: ([^:]+):(\d+) RewriteCond URL ^/favicon\.ico$ RewriteCond URL ^/robots\.txt$ RewriteCond URL ^/static/ RewriteCond URL ^/public/ RewriteCond URL ^/upload/ RewriteCond URL ^/images/ RewriteCond URL ^/css/ RewriteCond URL ^/js/ RewriteCond URL ^/index\.php$ RewriteRule ^.*$ - [L] <h1>其他请求全部重写到 index.php</h1><p>RewriteRule ^(.*)$ /index.php/ [I,L]</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill5233" title="btpanel phpsite 宝塔面板PHP网站"><img src="https://img.php.cn/upload/skill/000/000/081/179040786932301.jpg" alt="btpanel phpsite 宝塔面板PHP网站" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill5233" title="btpanel phpsite 宝塔面板PHP网站" class="overflowclass">btpanel phpsite 宝塔面板PHP网站</a> <p class="overflowclass">宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理</p> </div> <a rel="nofollow" href="/xiazai/skill5233" title="btpanel phpsite 宝塔面板PHP网站" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>
注意:RewriteCond 在 ISAPI_Rewrite v2 中不支持多条件链式判断,v3 才完整支持。若用 v2,请改用简单白名单方式,或直接升级环境。
重要提醒与替代建议
IIS 6 + httpd.ini 方案存在明显局限:
- ISAPI_Rewrite 需单独安装,免费版功能受限(如 v2 免费版不支持
RewriteCond); - ThinkPHP 6 默认要求 PHP 7.1+,而 IIS 6 通常搭配老旧 PHP,兼容性风险高;
- IIS 7.5+ 原生支持 URL Rewrite 模块,应优先使用
web.config,规则更标准、易维护; - 若无法升级 IIS,建议换用 Nginx 或 Apache,伪静态支持更完善。
验证是否生效
配置后重启 IIS 或 ISAPI_Rewrite 服务,访问类似 http://yourdomain.com/index/user/login,应能正常路由到控制器,而非 404。同时检查 index.php 是否能正确解析 $_SERVER['PATH_INFO'] 或 $_SERVER['REQUEST_URI'] —— ThinkPHP 会自动适配,但需确认服务器未屏蔽相关变量。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










