web-dev-qa-db-fra.com

Est-ce qu'un vrai http à https réécrire est possible ou est-ce que cela va toujours être une redirection?

J'ai remarqué que certains articles sur Internet parlent de l'utilisation du module Apache mod_rewrite pour réécrire une connexion http client à serveur en https.

Mais réécrire effectue toutes les modifications côté serveur et est invisible pour le client. Puisque la connexion entre le client et le serveur ne se produit pas uniquement sur le serveur, cela signifie-t-il que toutes les "réécritures" http vers https sont en réalité des redirections?

3
Tony

... cela signifie-t-il que toutes les "réécritures" http vers https sont en réalité des redirections?

Oui. Ils sont externes redirections, pas internes réécritures.

Mais réécrire effectue toutes les modifications côté serveur et est invisible pour le client.

Oui, la plupart conviendraient qu'une "réécriture" est interne au serveur. Et une "redirection" est externe. Malheureusement, ces deux termes sont souvent interchangés (même dans les documents "officiels"), ce qui peut prêter à confusion. Parfois, ils seront qualifiés, par exemple. "redirection interne" (ce qui n'est pas rare dans la documentation Apache).

Apache mod_rewrite gère les réécritures et les redirections. mod_rewrite est requis (par opposition à mod_alias Redirect) car il vous permet de vérifier les demandes HTTP et HTTPS.

3
MrWhite

Mais réécrire effectue toutes les modifications côté serveur et est invisible pour le client.

Vous pensez peut-être qu'Apache est un client proxy intermédiaire qui demande une ressource à une autre URL ou peut-être une application qui gère la redirection.

Dans au moins 99% des configurations de site Web, lorsqu'une redirection est censée se produire de page en page, la première page génère des en-têtes et du texte représentant une redirection. Normalement, le code d'état généré est 301. Par exemple, les données suivantes peuvent être envoyées à un navigateur client à partir d'Apache lorsque la première page est demandée:

HTTP/1.1 301 Moved Permanently
Date: Fri, 04 Mar 2016 22:07:55 GMT
Server: Apache
Location: http://example.com/new/url
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://example.com/new/url">here</a>.</p>
</body></html>

Personnellement, je recommande contre toute forme de redirection interne, en particulier si elle est chaînée, car elle peut considérablement augmenter le temps de chargement d'une page (TTFB), ce qui peut réduire le classement dans les moteurs de recherche, tout simplement parce que Google aime les sites Web rapides.

Je suggérerais d'inventer une simple redirection en une étape de votre version HTTP de votre page vers la version HTTPS. Lorsque vous avez bien fait les choses, lorsque quelqu'un demande la version HTTP, le navigateur du client recevra des données similaires à celles présentées ci-dessus, mais l'emplacement commencera par HTTPS au lieu de HTTP.

1
Mike