Httpとhttpsの両方のURLについて、www以外のURLをwww urlにリダイレクトする必要があります。 web.configのルールに従ってみました。
<rule name="Redirect to WWW" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_Host}" pattern="^domain.com$" />
</conditions>
<action type="Redirect" url="http://www.domain.com/{R:0}" redirectType="Permanent" />
<rule name="Redirect to WWW https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTPS}" pattern="^domain.com$" />
</conditions>
<action type="Redirect" url="https://www.domain.com/{R:0}" redirectType="Permanent" />
非sslのURLには完全に機能しますが、sslの場合は https://domain.com から http://www.domain.com にリダイレクトします
ルールを修正してください。
両方のMatch Any
およびMatch All
状況では、Rewrite Mapソリューションを使用できます。ルールを作成する前に書き換えマップを作成する必要があるため、設定に非常にわずかな余分な労力しか与えられないという唯一の欠点がある完全に優れたソリューションです。言い換えれば、これをプロトコルの唯一の処理方法として使用することを選択した場合、安全になります。
MapProtocolというリライトマップを作成できます。{MapProtocol:{HTTPS}}
ルールアクション内のプロトコル。
<rewrite>
<rules>
<rule name="Redirect to www" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="false">
<add input="{HTTP_Host}" pattern="^domain.com$" />
</conditions>
<action type="Redirect"
url="{MapProtocol:{HTTPS}}://www.domain.com/{R:1}" />
</rule>
</rules>
<rewriteMaps>
<rewriteMap name="MapProtocol">
<add key="on" value="https" />
<add key="off" value="http" />
</rewriteMap>
</rewriteMaps>
</rewrite>
ここの他の答えは不必要に長く、ここに私が使用するルールがあります(コピーして貼り付けてください):
<rule name="ensurewww" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{CACHE_URL}" pattern="^(.+)://(?!www)(.*)" />
</conditions>
<action type="Redirect" url="{C:1}://www.{C:2}" redirectType="Permanent" />
</rule>
これにより、HTTPおよびHTTPSプロトコルを保持しながらwwwバージョンにリダイレクトされます
お役に立てれば。
2018年以降、毎回https(SSL)を使用することを検討してください!
そこで、wwwとhttpsへのリダイレクトを一緒に使用します。
<rule name="Redirect to www" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="false">
<add input="{HTTP_Host}" pattern="^domain.com$" />
</conditions>
<action type="Redirect" url="https://www.comain.com/{R:1}" redirectType="Permanent" />
</rule>
<rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{SERVER_PORT_SECURE}" pattern="^0$" />
</conditions>
<action type="Redirect" url="https://{HTTP_Host}{REQUEST_URI}" redirectType="Permanent" />
</rule>
私はこれが古い投稿であることを知っていますが、完全には答えられていません。私は最終的に拡張することになりました Satpals answer
最初のルールはhttp + wwwをキャッチし、2番目のルールはwww以外をキャッチします
何らかの理由で、私は最初のルールでMapProtocolを使用できませんでしたが、URLに直接書き込まれたhttpsで動作します。
<rewrite>
<rules>
<rule name="Special case www & HTTPS off" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_Host}" pattern="^www\.example\.com$" />
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://www.example.com/{R:1}" redirectType="SeeOther" />
</rule>
<rule name="Redirect to www & HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="false">
<add input="{HTTP_Host}" pattern="^example\.com$" />
</conditions>
<action type="Redirect" url="{MapProtocol:{HTTPS}}://www.example.com/{R:1}" redirectType="SeeOther" />
</rule>
</rules>
<rewriteMaps>
<rewriteMap name="MapProtocol">
<add key="on" value="https" />
<add key="off" value="http" />
</rewriteMap>
</rewriteMaps>
</rewrite>
これは私のためにうまくいった:-
<rewrite>
<rules>
<rule name="Redirect to WWW" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_Host}" pattern="^myExample.in$" />
</conditions>
<action type="Redirect" url="https://www.myExample.in/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>