J'essaie de faire une redirection HTTP vers HTTPS sur une plateforme d'hébergement Web GoDaddy. J'ai la plate-forme d'hébergement Windows et j'édite le fichier web.config. Il existe plusieurs domaines sous ce compte d'hébergement et J'essaie de faire la redirection pour un seul domaine et ses sous-domaines.
Exemple:
domain1.example
, domain2.example
, etc ... et chaque domaine peut avoir des sous-domainesComportement souhaité:
*.domain1.example
redevenu https://*.domain1.example
(avec ou sans www)C'est ce que j'ai commencé avec, qui redirigera chaque domaine de HTTP vers HTTPS, et cela fonctionne correctement:
<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>
Maintenant, j'ai essayé de le faire pour un domaine spécifique uniquement, mais je ne sais vraiment pas comment écrire cela moi-même. Au lieu de cela, j'ai rassemblé des informations que j'ai trouvées en ligne. Je trouve tous les +?\
et A-Za
assez déroutants.
<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>
Mais cela entraîne une erreur 500 (serveur interne).
<match url="(https?:\/\/(.+?\.)?domain1\.example
Je crois que l'attribut url
ne fait que correspondre aux chemins d'URL, pas à l'URL absolue, donc cela ne correspondra jamais. Mais si cela correspond, c'est aussi https
, ce qui n'est pas ce dont vous avez besoin.
Essayez simplement d’ajouter une autre condition à votre règle originale qui vérifie le HTTP_Host
pour le domaine spécifique. Par exemple:
<add input="{HTTP_Host}" pattern="^([a-z]+\.)?domain1\.example$" />