我在PHP(5.2.9-1)应用程序中有一种表单,该表单导致IIS(Microsoft-IIS / 6.0)在发布时引发以下错误:
由于使用了无效的方法(HTTP动词)来尝试访问,因此无法显示正在查找的页面。
这是HTTP 405状态代码。应用程序中的所有其他形式都可以使用,因此我认为PHP页面的IIS“动词”设置正确。
这是客户的服务器,我无权访问它来验证设置或测试代码。我所能做的就是发送客户替换文件。IIS服务器上的其他客户没有这样的问题。
表格非常简单:
<form method="post" action="index.php"> ... fields ... </form>
是什么导致IIS仅在一种表单上抛出该错误,而在其他表单上运行良好?
我设法通过FTP访问了客户的服务器,因此能够找到问题所在。
表单过帐后,我对用户进行身份验证,然后重定向到应用程序的主要部分。
Util::redirect('/apps/content');
该错误不是在表单的发布中发生的,而是在紧随其后的重定向上发生的。由于某种原因,IIS继续假定重定向的POST方法,然后将POST /apps/content作为目录反对。
/apps/content
该错误消息从不指示生成错误的是以下页面-谢谢Microsoft!
解决方案是在末尾添加斜杠:
Util::redirect('/apps/content/');
然后IIS可以将重定向解析为默认文档,因为不再尝试POST到目录。