Question

Est-il un moyen propre pour rediriger toutes les tentatives pour aller à HTTP:// version d'un site à son HTTPS:// équivalent?

Était-ce utile?

La solution

Je pense que la façon la plus propre est tel que décrit ici IIS-aid.com.C'est le web.config uniquement et donc, si vous changez de serveur, vous n'avez pas à vous souvenir de toutes les étapes que vous avez vécu avec la 403.4 page d'erreur personnalisée ou d'autres autorisations spéciales, il fonctionne, tout simplement.

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <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>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Autres conseils

Le plus facile et propre solution que j'ai trouvé était à

  1. Dans les Paramètres SSL -> require SSL

  2. Dans les Pages d'Erreur -> Sur 403.4 erreur -> Redirection vers le site en HTTPS

  3. Dans Les Pages D'Erreur -> Modifier Les Paramètres Des Fonctionnalités De...-> Établir le détail des erreurs pour les demandes locales et des pages d'erreur personnalisées à distance demande

L'avantage est qu'il ne nécessite pas de lignes de code supplémentaires.Inconvénient est qu'il vous redirige vers une url absolue.

Un moyen propre à des modifications que le schéma de l'URL de http -> https et laisse tout le reste équivalent.Il convient de serveur-côté de sorte qu'il n'y a pas les problèmes de navigateur.

JPPinto.com a Étape Par Étape les instructions sur la façon dont cela est fait, sauf qu'ils utilisent javascript (HttpRedirect.htm) à la place d'une redirection côté serveur.Pour certaines raisons, je ne pouvais pas obtenir IE exécuter le javascript si vous avez " Afficher les messages d'erreur HTTP simplifiés activé, qui est activé par défaut.Autre chose: avec le script, c'est que la redirection de chemin d'accès ne fonctionne pas même en FF ou Chrome.Le script redirige toujours à la racine.(J'ai peut-être raté quelque chose, car il doit rediriger vers de chemin.)

Pour ces raisons, j'ai utilisé une page ASP pour la redirection.L'inconvénient est bien sûr que cela nécessite ASP classique pour être activé sur le serveur.

OpsanBlog a un Script ASP et des instructions qui fonctionnent bien avec IIS6.

J'ai eu quelques problèmes à l'aide de cette méthode avec IIS7.Problèmes de l'interface utilisateur pour la plupart, depuis IIS7, il est vraiment facile de rater quelque chose.

  • Tout d'abord, vous devez installer l'ASP en tant que rôle de serveur web fonctionnalité.
  • Deuxièmement, à l'aide d'un répertoire virtuel n'est pas pas comme prévu dans IIS7 et je n'ai pas essayez de déboguer cette.Au lieu de cela, j'ai mis le fichier dans le dossier racine du site et utilisé l'url '/SSLRedirect.asp' dans le 403.4 page d'erreur de référence.
  • Dernier, la partie la plus délicate, vous ne doit PAS appliquer le protocole SSL pour SSLRedirect.asp.Sinon, vous aurez une 403.4 erreur.Pour ce faire, vous choisissez le fichier dans IIS7 'Affichage du Contenu", et passer en mode de Fonctionnalités " de sorte que vous pouvez modifier les paramètres SSL pour le seul fichier et de désactiver 'Exiger SSL case.

IIS manager doit montrer le nom du fichier dans l'en-tête.

Mondiale.asax

protected void Application_BeginRequest()
{
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}

J'utilise asp classique (intranet) et sur les pages qui nécessite une connexion à l'ouverture de session d'inclure le fichier ne la redirection:

if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then 
    Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if

Bien sûr, cela ne comprend pas GET ou POST données.Donc en effet c'est un propre de redirection vers votre page sécurisée.

Je pense que par "proprement", vous voulez dire, comme avec un 300 redirection.Config pour un grand nombre de serveurs et des langues ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top