我已经IIS > MySite > Error Pages
设置了自定义php 404错误页面,但 $ _ POST 数组始终为空。这是正常的吗?如何告诉IIS将POST数据传递给PHP错误页面?
IIS 7.5
答案 0 :(得分:1)
免责声明:此答案在行间阅读中给出。
正如我在评论中所述,如果请求无效,则没有理由处理某些用户输入。 HTTP状态代码404 明确表示此请求无效,因为无法找到该资源。
找不到请求的资源,但可能会再次提供 在将来。客户的后续请求是允许的。
什么是帖子?来自Wikipedia
根据RFC 7231,POST方法应该用于其中的任何上下文 请求是非幂等的:即它会导致服务器发生更改 每次执行时都说明,例如向a。提交评论 博客在线投票或投票。[...]
我无法确认或否认,如果确实如此,IIS
没有404
发帖,因为我从未尝试过这个。但支持是没有意义的。
对我而言听起来,你想重写一些请求。为此,您需要Rewrite Module。
然后你就可以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'];
如果您拨打网址http://yourwebsite.com/foo/bar
,则会在index.php
字符串foo/bar
中回显。
现在,您可以拆分字符串,使用它做出一些决定,并对不同的值执行不同的操作。