Webサーバー(IIS 10)上のすべてのサイトでSSLを強制する(つまり、HTTPをHTTPSにリダイレクトする)必要があります。
現在、各サイトで「SSLが必要」であり、403 error
ハンドラを設定して、その特定のサイトのhttpsアドレスに対して302 redirect
を実行しています。
これはうまくいきます。しかし、すべてのサイトで行うのは面倒であり、人為的ミスの余地は十分にあります。
理想的には、301 redirect
からHTTP://*
までのすべてのHTTPS://*
にパーマネントを設定したい
IISでこれを行う簡単な方法はありますか?
IIS IIS7 +のURL書き換えモジュール2.1はあなたの友人かもしれません。モジュールは IIS URL書き換え からダウンロードできます RL書き換えモジュールの使用 =および RL Rewrite Module 2.0構成リファレンス モジュールの使用方法を説明します。
モジュールがインストールされたら、IIS Managerを使用してホスト全体のリダイレクトを作成できます。URL Rewriteを選択して、追加ルール...、および空白のルール。
名前:
HTTPSにリダイレクト
マッチURL
リクエストされたURL:_Matches the Pattern
_
使用:Wildcards
パターン:_*
_
大文字と小文字を区別しない:チェック済み
条件
論理グループ:_Match Any
_
条件入力:_{HTTPS}
_
入力文字列かどうかを確認します:_Matches the Pattern
_
パターン:OFF
大文字と小文字を区別しない:チェック済み
条件をまたいでキャプチャグループを追跡:オフ
サーバー変数
空白のままにします。
アクション
アクションタイプ:Redirect
リダイレクトURL:_https://{HTTP_Host}{REQUEST_URI}
_
クエリ文字列を追加:チェックされていません
リダイレクトタイプ:Permanent (301)
ルールを適用してIISResetを実行します(またはIIS Managerで[再起動]をクリックします)
または、モジュールをインストールした後、applicationHost.configファイルを次のように変更できます。
_<system.webServer>
<rewrite>
<globalRules>
<rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" ignoreCase="true" negate="false" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
<add input="{HTTPS}" ignoreCase="true" matchType="Pattern" negate="false" pattern="OFF" />
</conditions>
<action type="Redirect" url="https://{HTTP_Host}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
</rule>
</globalRules>
</rewrite>
</system.webServer>
_
私の調査では、これがリダイレクトのより良い方法である可能性があることを示しています:
<rewrite>
<rules>
<rule name="http to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}" />
</rule>
</rules>
</rewrite>