我们有一个在 IIS 6 上运行的应用程序,它使用自定义 HttpModule 来重写 url。这很好用(我们做得很好),除非 Context.RewritePath 目标是 .php 文件。php 文件按预期执行,但是 $_POST 集合为空,这意味着它无法访问提交到重写 url 的任何表单。重写为 .aspx 文件时不存在该问题,因为 Request.Form 集合很好。
因此,我的问题有两个部分:为什么 $_POST 集合没有被填充?有没有办法确保在重写后正确填充 .php $_POST 集合?
我没有太多要展示的代码方式。有一个简单的:
context.RewritePath(newPath);
一旦 HttpModule 确定了将请求发送到哪里。
编辑:
有趣的是,如果我var_dump(file_get_contents('php://input'));
在 PHP 文件(这里描述的方法)中执行此操作,则会显示表单的内容。所以数据到达了 PHP 脚本,但没有到达 $_POST 数组。