我已经通过IIS > MySite > Error Pages
设置了一个自定义的php 404错误页面,但$_POST数组始终为空。这正常吗?如何告诉IIS将POST数据传递到PHP错误页面?
IIS 7.5
免责声明:这个答案是在字里行间给出的。
正如我在评论中所说,如果请求无效,就没有理由处理一些用户输入HTTP状态代码404字面意思是,此请求无效,因为找不到资源。
来自维基百科
找不到请求的资源,但可能再次可用未来客户的后续请求是允许的。
什么是邮政?来自维基百科
根据RFC 7231,POST方法应该用于任何上下文,其中请求是非幂等的:也就是说,它会导致服务器发生更改每次执行时的状态,例如向博客文章或在线投票。[…]
如果这是真的,我不能确认或否认IIS
在404
上没有Post,因为我从未尝试过。但支持是没有意义的。
对我来说,这听起来像是,你想重写一些请求。为此,您需要重写模块。
然后你就可以有一个像这样的web.config
了。
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="RequestString">
<match url="^(.*)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?requestString={R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
在你的index.php
上,你可以有:
echo $_GET['requestString'];
如果您调用url http://yourwebsite.com/foo/bar
,您将在index.php
中回显字符串foo/bar
。
现在,您可以拆分字符串,使用它做出一些决定,并对不同的值执行不同的操作。