web-dev-qa-db-ja.com

web.configはwww以外にwwwをリダイレクトします

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 にリダイレクトします

ルールを修正してください。

36
Anand

両方の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>

参照

50
Satpal

ここの他の答えは不必要に長く、ここに私が使用するルールがあります(コピーして貼り付けてください):

<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バージョンにリダイレクトされます

お役に立てれば。

8
Chtiwi Malek

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>

詳細はこちら: https://forums.realmacsoftware.com/t/effective-july-2018-google-s-chrome-browser-will-mark-non-https-sites-as-not-secure/ 18597

8
Meloman

私はこれが古い投稿であることを知っていますが、完全には答えられていません。私は最終的に拡張することになりました Satpals answer

最初のルールはhttp + wwwをキャッチし、2番目のルールはwww以外をキャッチします

何らかの理由で、私は最初のルールでMapProtocolを使用できませんでしたが、URLに直接書き込まれたhttpsで動作します。

<rewrite>
  <rules>
    <rule name="Special case www &amp; 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 &amp; 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>
2
southz rgw

これは私のためにうまくいった:-

<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>
0
Anjan Kant