Préface
Premièrement: Une simple réécriture du port 80 -> du port 443 NE résoudra PAS ce problème. Dans presque toutes les questions précédentes, le fil de discussion, le fil de forum, etc., j'ai trouvé que c'était la première réponse ignorante et a été répétée plusieurs fois.
Deuxièmement: Oui, je sais que vous ne pouvez pas servir le trafic HTTP et HTTPS sur le même port. Ce n'est pas ça.
Scénario:
Serveur Apache hébergeant plusieurs sites via la multiplication de ports. Le port 80 dessert un site public. Le port 443 sert la version sécurisée de ce site.
Les ports 7443, 8443 et 9443 desservent chacun des sites distincts sécurisés par SSL.
Si un utilisateur tape l'URL ou reçoit un lien non valide, dites http: //hostname.tld: 7443 , la page ridicule suivante leur est donnée:
Au lieu du serveur, il suffit de les rediriger vers https: //hostname.tld: 7443 .
Ma question est, comment au nom du trou du cul de Zeus pouvez-vous modifier le comportement d'Apache ou ce message d'erreur pour rediriger automatiquement l'utilisateur?
Apache sert manifestement une demande non https (pour afficher ce message d'erreur) même s'il est configuré pour HTTPS. Il me semble remarquablement stupide de ne pas simplement faire la redirection par défaut, mais je peux comprendre pourquoi ils ont adopté le comportement qu'ils ont fait, même si je ne suis pas d'accord. Donc ma question est: pouvez-vous le changer? Ils gèrent l'erreur QUELQUE PART, et avec Apache étant la corne d'abondance de configuration qu'elle est, il va de soi qu'il existe une directive quelque part pour gérer ce comportement, mais je n'ai pas été en mesure de la trouver en plusieurs heures de bricolage jusqu'à présent.
Mise à jour:
J'ai tenté diverses choses, notamment:
en utilisant des
ErrorDocument 400
directives pour accéder à un CGI et à un script PHP qui envoient simplement des enStatus 301
-Location
têtes. Il en résulte une page vierge. En utilisantErrorDocument 400 https://hostname.tld:7443
simplement, ce lien s'affiche sur la page.L'utilisation de presque toutes les combinaisons de
mod_rewrite
I ou de Google peut arriver, y compris des déclarations générales qui dirigent entièrement le site; ceux-ci ne fonctionnent jamais . Littéralement, ils ne font rien. Je suppose qu'Apache est en train de commettre l'erreur ci-dessus avant même d'essayer de traiter les directives de réécriture.
Je ne peux pas utiliser de redirections basées sur le port, en raison de l'utilisation du port personnalisé. Je ne peux pas utiliser de redirections basées sur des scripts car elles ne sont jamais servies en raison de la non-correspondance http / https. Je suis presque prêt à attribuer cela à un bug ou à un comportement involontaire, mais quelqu'un a pensé à y insérer un message d'erreur très personnalisé, il n'a pas pris la peine de penser que vous voudriez peut-être simplement URL qu'ils fournissent déjà ?