我有一个在IIS 7.5下运行的php网站。该站点由Windows身份验证保护,并且可以正常运行:
当用户访问该站点时,系统会要求他们输入用户名/密码并通过身份验证。如果用户单击“取消”或3次输错密码,则会显示401错误页面:
现在,我想显示自定义页面来解释如何登录。因此,我转到“错误”页面,选择状态码401.2并将其指向我要显示的页面:
然后,确保每个人都打开了自定义错误。还有kaa-boom!身份验证不再起作用,不会向用户显示密码提示。如文档所述,Windows身份验证的工作原理是先发送401答复,然后浏览器要求用户提供提供者凭据,然后他们确定下一步要做什么。
此处发生的情况:在首次请求页面时,IIS尝试发送401标头,但注意到web.config表示“在401上重定向到此页面”。而不是身份验证,它只提供重定向页面。
我尝试替换401、401.1、401.2-没什么区别。
我在做什么错以及如何在用户身份验证错误上给出自定义页面?
ps这是web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="401" subStatusCode="-1" />
<error statusCode="401" subStatusCode="2" prefixLanguageFilePath="" path="/not_restricted/401.htm" responseMode="ExecuteURL" />
<error statusCode="404" prefixLanguageFilePath="" path="/not_restricted/404.htm" responseMode="ExecuteURL" />
</httpErrors>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>
<system.web>
<identity impersonate="false" />
<customErrors defaultRedirect="http://www.myserver.com/not_restricted/500.htm" mode="Off">
</customErrors>
</system.web>
</configuration>