Prefacio
En primer lugar: una simple reescritura del puerto 80 -> puerto 443 NO solucionará esto. En casi todas las preguntas anteriores, hilo de correo, hilo de foro, etc., he encontrado que esta fue la primera respuesta ignorante y fue repitió varias veces.
En segundo lugar: sí, sé que no puede servir tráfico HTTP y HTTPS en el mismo puerto. Esto no es eso.
Guión:
Servidor Apache que aloja múltiples sitios a través de la multiplicación de puertos. El puerto 80 sirve un sitio público. El puerto 443 sirve la versión segura de ese sitio.
Los puertos 7443, 8443 y 9443 sirven cada uno a sitios separados con seguridad SSL.
Si un usuario escribe mal la URL, o se le da un enlace que no es válido, por ejemplo http: //hostname.tld: 7443 , se le da la siguiente página ridícula:
En lugar del servidor, simplemente los redirige a https: //hostname.tld: 7443 .
Mi pregunta es, ¿cómo, en nombre del ano de Zeus, puede modificar el comportamiento de Apache o este mensaje de error para redirigir al usuario automáticamente?
Apache obviamente está atendiendo una solicitud que no es https (para mostrar ese mensaje de error) a pesar de que está configurado para HTTPS. Me parece notablemente tonto no solo hacer la redirección de forma predeterminada, sino que puedo entender por qué siguieron el comportamiento que hicieron, incluso si no estoy de acuerdo. Entonces mi pregunta es: ¿puedes cambiarlo? Están manejando el error EN ALGÚN LUGAR, y con Apache siendo la cornucopia de configuración que es, es lógico que haya alguna directiva en algún lugar para manejar este comportamiento, pero hasta ahora no he podido encontrarlo en varias horas de ajustes.
Actualizar:
He intentado una variedad de cosas que incluyen:
usando
ErrorDocument 400
directivas para llegar a un script CGI y PHP que solo envíaStatus 301
yLocation
encabezados. Esto da como resultado una página en blanco. El usoErrorDocument 400 https://hostname.tld:7443
simple da como resultado que ese enlace se muestre en la página.El uso de casi todas las combinaciones de
mod_rewrite
I o Google puede generar, incluidas las declaraciones generales que dirigen el sitio por completo; Estos nunca funcionan. Literalmente, no hacen nada. Supongo que Apache está pateando el error anterior incluso antes de intentar procesar las directivas de reescritura.
No puedo usar redirecciones basadas en puertos, debido al uso de puertos personalizados. No puedo usar redireccionamientos basados en scripts porque nunca se reciben debido a la falta de coincidencia http / https. Estoy casi dispuesto a atribuir esto a un error o un comportamiento no intencionado, pero alguien tuvo la idea de poner un mensaje de error muy personalizado, no se molestaron en pensar que tal vez querrías simplemente llevarlo al URL que ya están proporcionando ?