Ich versuche, eine HTTP-zu-HTTPS-Umleitung auf einer GoDaddy-Webhosting-Plattform durchzuführen. Ich besitze die Windows-Hostingplattform und bearbeite die Datei web.config. Unter diesem Hosting-Konto befinden sich mehrere Domains. Ich versuche, die Umleitung nur für EINE Domain und deren Subdomains durchzuführen..
Beispiel:
domain1.example
, domain2.example
, etc ... und jede Domain kann Subdomains habenGewünschtes Verhalten:
*.domain1.example
weitergeleitet an https://*.domain1.example
(mit oder ohne www)Dies ist, was ich mit begann, die jede Domain von HTTP zu HTTPS umleiten wird, nd es funktioniert richtig:
<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>
Jetzt habe ich versucht, es nur für eine bestimmte Domain zu machen, aber ich habe wirklich keine Ahnung, wie ich das selbst schreiben soll. Stattdessen habe ich ein paar Sachen zusammengestellt, die ich online gefunden habe. Ich finde alle +?\
und A-Za
ziemlich verwirrend.
<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>
Dies führt jedoch zu einem 500-Fehler (interner Server).
<match url="(https?:\/\/(.+?\.)?domain1\.example
Ich glaube, das Attribut url
stimmt nur mit URL-Pfaden überein, nicht mit der absoluten URL. Aber wenn es passt, passt es auch zu https
, was Sie nicht benötigen.
Fügen Sie einfach ein weiteres Bedingung zu Ihrem ursprünglichen Regel hinzu, das den HTTP_Host
für die bestimmte Domain überprüft. Zum Beispiel:
<add input="{HTTP_Host}" pattern="^([a-z]+\.)?domain1\.example$" />