回答:
最もクリーンな方法は、ここIIS-aid.comで説明されているとおりだと思います。これはweb.configのみであるため、サーバーを変更する場合、403.4カスタムエラーページまたはその他の特別な権限で実行したすべての手順を覚えておく必要はありません。
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
私が見つけた最も簡単でクリーンな解決策は
SSL設定-> SSLが必要
エラーページ-> 403.4エラー時-> HTTPSサイトにリダイレクト
エラーページ->機能設定の編集...->ローカルリクエストの詳細エラーとリモートリクエストのカスタムエラーページの設定
利点は、追加のコード行を必要としないことです。欠点は、絶対URLにリダイレクトされることです。
クリーンな方法は、URLスキームのみをhttp-> httpsに変更し、その他はすべて同等のままにします。ブラウザの問題がないように、サーバー側にする必要があります。
JPPinto.com には、サーバー側のリダイレクトの代わりにjavascript(HttpRedirect.htm)を使用することを除いて、これがどのように行われるかについてのステップバイステップの説明があります。何らかの理由で、「フレンドリーなHTTPエラーメッセージを表示する」がデフォルトで有効になっていると、IEでJavaScriptを実行できませんでした。スクリプトのもう1つのことは、パスへのリダイレクトがFFまたはChromeでも機能しなかったことです。スクリプトは常にルートにリダイレクトします。(パスにリダイレクトする必要があるため、何かを見逃している可能性があります。)
これらの理由により、私はリダイレクトにASPページを使用しました。もちろん、欠点は、サーバーでクラシックASPを有効にする必要があることです。
OpsanBlogには、IIS6で適切に機能するASPスクリプトと指示があります。
IIS7でこの方法を使用すると、いくつかの問題が発生しました。IIS7は何かを見落とすことを本当に簡単にしているので、ユーザーインターフェイスの問題はほとんどです。
IISマネージャーは、ヘッダーにファイル名を表示する必要があります。
Global.asax
protected void Application_BeginRequest()
{
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}
私はクラシックasp(イントラネット)を使用しており、ログインが必要なページでは、ログオンインクルードファイルがリダイレクトを実行します。
if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then
Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if
もちろん、これにはGETまたはPOSTデータは含まれません。したがって、実際には、保護されたページへのクリーンなリダイレクトになります。