web-dev-qa-db-fra.com

Redirection HTTP vers HTTPS pour un domaine spécifique via web.config

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:

  • 5 domaines: domain1.example, domain2.example, etc ... et chaque domaine peut avoir des sous-domaines

Comportement souhaité:

  • *.domain1.example redevenu https://*.domain1.example (avec ou sans www)
  • inclure un caractère générique devant le domaine, pour gérer tous les sous-domaines

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

3
Andrew
<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$" />
2
DocRoot