2016-09-16 14 views
2

私は、2つのIIS URL書き換えルールを作成した後、私が持っているダブルリダイレクトを避ける必要があります。IIS wwwからnon-wwwへ、httpからhttpsへのリダイレクト:リダイレクトは1回だけ可能ですか?

1)wwwをwww以外にリダイレクトします。

2)HTTPからHTTPSにリダイレクトします。

これは私のコードです:

<rule name="Redirect to https" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
     <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
    </conditions> 
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" /> 
</rule> 
<rule name="CanonicalHostNameRule1" enabled="true"> 
    <match url="(.*)" /> 
    <conditions> 
     <add input="{HTTP_HOST}" matchType="Pattern" pattern="^mydomain\.com$" ignoreCase="true" negate="true" /> 
    </conditions> 
    <action type="Redirect" url="https://ABC/{R:1}" /> 
</rule> 

(ABCがmydomain.com名前ですが、私は質問を投稿できるようにするために、それを変更しなければならなかった)

問題があればということです私はwwwに行く。それはwwwからnon-wwwへのリダイレクトとhttpからhttpsへの2つのリダイレクトをする。

私は両方の条件で1つのルールしか持たなかったが、結果は良くなかった。

リダイレクトを行う方法はありますか?

+0

あなたのDNS設定、fyi経由でwww以外のwwwにリダイレクトすることができます...私はリダイレクトとはみなされません。 – Will

答えて

0

これは私が使用した最終的な構成である:それは非WWWとhttpsのURLにリダイレクトする1つのルールだけだ

  <rewrite> 
      <rules> 
       <rule name="Force non-WWW and SSL" enabled="true" stopProcessing="true"> 
        <match url="(.*)" /> 
        <conditions logicalGrouping="MatchAny"> 
         <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" /> 
         <add input="{HTTPS}" pattern="off" /> 
        </conditions> 
        <action type="Redirect" url="https://yourdomainname.com/{R:1}" appendQueryString="true" redirectType="Permanent" /> 
       </rule> 
      </rules> 
     </rewrite> 

0

HTTPからHTTPSを使用することができるはずです。その逆は、IISの設定によって異なります。

 <rule name="HTTP to HTTPs and www to non-www " enabled="true" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions logicalGrouping="MatchAny" trackAllCaptures="false"> 
      <add input="{SERVER_PORT}" pattern="^80$" /> 
      <add input="{HTTP_HOST}" pattern="^www\.example\.com$" /> 
     </conditions> 
     <action type="Redirect" url="https://example.com/{R:1}" /> 
    </rule> 

あなたはIIS(バインディング、サイトなど)で構成サイトを持っているかに基づいて、すべてあなたの書き換えルールがどのように機能するかに影響するだろうとどこでそれらを配置するために起こっている、覚えておいてください。アプリレベルで、またはグローバルルールとして。

バインディングやIISが他のサイトでどのように構造化されているかわからないので、URL書き換えルールを100%正確に記述することは不可能です。 上記の構文を少し試してみる必要があります。

関連する問題