web-dev-qa-db-ja.com

web.configを介した特定のドメインのHTTPからHTTPSへのリダイレクト

GoDaddy WebホスティングプラットフォームでHTTPからHTTPSへのリダイレクトを試みています。 Windowsホスティングプラットフォームがあり、web.configファイルを編集しています。このホスティングアカウントには複数のドメインがあり、1つのドメインとそのサブドメインのみのリダイレクトを実行しようとしています

例:

  • 5つのドメイン:domain1.exampledomain2.exampleなど。各ドメインにはサブドメインがあります

望ましい行動:

  • *.domain1.examplehttps://*.domain1.exampleに再置換されました(wwwの有無にかかわらず)
  • サブドメインを処理するために、ドメインの前にワイルドカードを含める

これは私が始めたもので、すべてのドメインをHTTPからHTTPSにリダイレクトしますそして正常に動作します:

<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>  

今、私は特定のドメインのみでそれを作ろうとしましたが、私はこれを自分で書く方法を本当に知りません。代わりに、オンラインで見つけたものをいくつかまとめました。すべての+?\A-Zaが非常に紛らわしいです。

        <rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
            <match url="(https?:\/\/(.+?\.)?domain1\.example(\/[A-Za-z0-9\-\._~:\/\?#\[\]@!$&'\(\)\*\+,;\=]*)?)" /> 
                <conditions> 
                    <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                </conditions> 
            <action type="Redirect" redirectType="Permanent" url="https://{HTTP_Host}/{R:1}" />
        </rule>   

ただし、これは500(内部サーバー)エラーになります。

3
Andrew
<match url="(https?:\/\/(.+?\.)?domain1\.example

url属性はURLパスのみに一致し、絶対URLには一致しないため、これは決して一致しません。ただし、一致した場合は、httpsも一致しますが、これは必要なものではありません。

特定のドメインのHTTP_Hostをチェックする別の条件を元のルールに追加してみてください。例えば:

<add input="{HTTP_Host}" pattern="^([a-z]+\.)?domain1\.example$" />
2
DocRoot