IIS 7.5で実行されているphp Webサイトがあります。サイトはWindows認証によって保護されており、正常に機能します。
ユーザーがサイトにアクセスすると、ユーザー名/パスワードの入力を求められ、認証された場合は通過します。ユーザーが[キャンセル]をクリックするか、パスワードを3回誤入力すると、401エラーページが表示されます。
次に、ログイン方法を説明するカスタムページを表示したいと思います。だから私はエラーページに行き、ステータスコード401.2を選択して、表示したいページを指し示します:
次に、すべてのユーザーに対してカスタムエラーがオンになっていることを確認します。そしてカーブーム!認証は機能しなくなり、ユーザーにはパスワードプロンプトが表示されません。文書によると、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>