GoDaddy WebホスティングプラットフォームでHTTPからHTTPSへのリダイレクトを試みています。 Windowsホスティングプラットフォームがあり、web.configファイルを編集しています。このホスティングアカウントには複数のドメインがあり、1つのドメインとそのサブドメインのみのリダイレクトを実行しようとしています。
例:
domain1.example
、domain2.example
など。各ドメインにはサブドメインがあります望ましい行動:
*.domain1.example
はhttps://*.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(内部サーバー)エラーになります。
<match url="(https?:\/\/(.+?\.)?domain1\.example
url
属性はURLパスのみに一致し、絶対URLには一致しないため、これは決して一致しません。ただし、一致した場合は、https
も一致しますが、これは必要なものではありません。
特定のドメインのHTTP_Host
をチェックする別の条件を元のルールに追加してみてください。例えば:
<add input="{HTTP_Host}" pattern="^([a-z]+\.)?domain1\.example$" />