# IIS下不用Rewrite实现wordpress伪静态

- Link: https://yjyj.net/learn/wordpress-learn/1102.html
- Published: 2009-03-01T01:15:41+08:00
- Author: 小 虾

⚡ 生猛大蝦编辑部 · 30 秒核心看点

 * 不用 Rewrite，也能靠 404 错误页把 WordPress 请求导回入口文件。
 * 关键是改写 QUERY_STRING、REQUEST_URI 和 PATH_INFO，让程序识别伪静态路径。
 * 适合 IIS 老环境快速落地，但要注意 404 处理逻辑与路径解析是否一致。

原理是利用404错误页面重写URL

程序代码

  |

<?php
$qs = $_SERVER[‘QUERY_STRING’];$_SERVER[‘REQUEST_URI’] = substr($qs, strpos($qs, ‘:80’)+3);$_SERVER[‘PATH_INFO’] = $_SERVER[‘REQUEST_URI’];include(‘index.php’);?>

  |

📌 生猛大蝦编辑部 · 背景与实操延伸

这篇文章虽然短，但思路很典型：在没有 Rewrite 模块或不方便改服务器规则时，先借 404
错误页“接管请求”，再把原始地址喂给 WordPress。实操时最容易踩坑的是 IIS 的错误页配置、
PHP 是否能正常执行，以及 QUERY_STRING 的格式是否符合脚本截取逻辑。建议先用测试文章
页验证，再检查固定链接是否全部可用。

❓ 延伸问答与排错指南（FAQ）

IIS 下为什么能用 404 实现伪静态？

因为请求找不到真实文件时，会先进入 404 错误页处理流程。把这个入口页改成 PHP 脚本
后，就能读取原始请求信息，再手动改写 REQUEST_URI 和 PATH_INFO，最后交给 WordPress
继续解析。

这段代码具体做了什么？

它先取出 QUERY_STRING，再从中截取原始路径，写回 REQUEST_URI 和 PATH_INFO，最后 include('
index.php')。这样 WordPress 会把访问当成正常的伪静态地址来处理，而不是普通查询参数。

使用这种方法要注意什么？

要确认 IIS 的 404 页面确实会执行 PHP，并且服务器对 PATH_INFO 的识别没有冲突。若路径
截取规则不匹配，可能出现跳转异常或页面无法解析，建议先在测试环境验证再上线。

📚 【[WordPress 学习](https://yjyj.net/category/learn/wordpress-learn)】专栏延伸
阅读与热门精选（[全站文章归档](https://yjyj.net/archive)）：

 * [MySQL 设置优化记录](https://yjyj.net/learn/wordpress-learn/6426.html)
 * [来自 WPJAM 的修改，给图片文件名增加时间戳](https://yjyj.net/learn/wordpress-learn/6425.html)
 * [WordPress自动升级超时Operation timed out after 30 解决方案](https://yjyj.net/learn/wordpress-learn/1181.html)
 * [启用WordPress 缩略图](https://yjyj.net/learn/wordpress-learn/1618.html)
 * 热门必读[DMIT 全线缺货, 只剩搬瓦工了](https://yjyj.net/discover/7787.html)
 * 热门必读[俩月了, DMIT 终于补货了!](https://yjyj.net/share/7795.html)

## Comments

### By: 深圳瑜伽

- Link: https://yjyj.net/learn/wordpress-learn/1102.html/comment-page-1#comment-1806
- Published: 2009-03-13T12:43:37+08:00

你好哇！你的博客很漂亮哇！！
 来踩踩喇！ 我是深圳的哟！ :-))

### By: 小 虾

- Link: https://yjyj.net/learn/wordpress-learn/1102.html/comment-page-1#comment-1808
- Published: 2009-03-14T22:34:01+08:00

也祝你愉快!交换一下blog链接吧.
