Prefazione
Innanzitutto: una semplice Porta 80 -> Porta 443 Riscrivi NON risolverà questo problema. In quasi ogni domanda precedente, thread di posta, thread del forum, ecc., Ho scoperto che questa è stata la prima risposta ignorante ed è stata ripetutamente pappagallo.
In secondo luogo: Sì, so che non è possibile servire il traffico HTTP e HTTPS sulla stessa porta. Questo non è quello.
Scenario:
Server Apache che ospita più siti tramite moltiplicazione delle porte. Port 80 serve un sito pubblico. La porta 443 serve la versione sicura di quel sito.
Le porte 7443, 8443 e 9443 servono ciascuna siti separati protetti da SSL.
Se un utente digita in modo errato l'URL o riceve un link non valido, ad esempio http: //hostname.tld: 7443 , viene visualizzata la seguente pagina ridicola:
Invece del server semplicemente reindirizzandoli su https: //hostname.tld: 7443 .
La mia domanda è: come in nome del butthole di Zeus puoi modificare il comportamento di Apache o questo messaggio di errore per reindirizzare l'utente automagicamente?
Apache ovviamente serve una richiesta non https (per visualizzare quel messaggio di errore) anche se è configurato per HTTPS. Mi sembra straordinariamente stupido non solo fare il reindirizzamento di default, ma posso capire perché sono andati con il comportamento che hanno fatto, anche se non sono d'accordo. Quindi la mia domanda è: puoi cambiarlo? Stanno gestendo l'errore QUALCUNO, e con Apache che è la configurazione cornucopia che è, è logico che ci sia qualche direttiva da qualche parte per gestire questo comportamento, ma finora non sono riuscito a trovarlo in diverse ore di armeggiamento.
Aggiornare:
Ho tentato una varietà di cose tra cui:
usando le
ErrorDocument 400
direttive per arrivare a un CGI e uno script PHP che invianoStatus 301
eLocation
intestazioni. Ciò si traduce in una pagina vuota. L'uso diErrorDocument 400 https://hostname.tld:7443
semplicemente comporta la visualizzazione di quel link sulla pagina.Usando quasi tutte le combinazioni di
mod_rewrite
I o Google può venire in mente, comprese dichiarazioni generali che dirigono interamente il sito; questi non funzionano mai . Letteralmente, non fanno nulla. Sto supponendo che Apache stia dando dei calci all'errore precedente prima ancora di tentare di elaborare le direttive di riscrittura.
Non riesco a utilizzare i reindirizzamenti basati sulle porte, a causa dell'utilizzo personalizzato delle porte. Non riesco a utilizzare i reindirizzamenti basati su script perché non vengono mai offerti a causa della mancata corrispondenza di http / https. Sono quasi disposto a scrivere questo su un bug o un comportamento non intenzionale, ma qualcuno ha avuto la premura di mettere un messaggio di errore molto personalizzato lì dentro, non si sono preoccupati di pensare che forse avresti voluto solo passare al URL che stanno già fornendo ?