Prefácio
Primeiramente: Uma simples reescrita da porta 80 -> porta 443 NÃO corrigirá isso. Em quase todas as perguntas anteriores, discussão por e-mail, discussão no fórum etc., descobri que essa foi a primeira resposta ignorante e foi repetida várias vezes.
Segundo: Sim, eu sei que você não pode servir tráfego HTTP e HTTPS na mesma porta. Isto não é isso.
Cenário:
Servidor Apache hospedando vários sites via multiplicação de portas. A porta 80 serve um site público. A porta 443 serve a versão segura desse site.
As portas 7443, 8443 e 9443 servem cada site separado protegido por SSL.
Se um usuário digitar incorretamente o URL ou receber um link inválido, diga http: //hostname.tld: 7443 , ele receberá a seguinte página ridícula:
Em vez de o servidor apenas os redirecionar para https: //hostname.tld: 7443 .
Minha pergunta é: como, em nome do buraco do Zeus, você pode modificar o comportamento do Apache ou esta mensagem de erro para redirecionar o usuário automaticamente?
O Apache está obviamente atendendo a uma solicitação não https (para exibir essa mensagem de erro), mesmo que esteja configurado para HTTPS. Parece-me incrivelmente estúpido não apenas fazer o redirecionamento por padrão, mas posso entender por que eles foram com o comportamento que fizeram, mesmo que eu não concorde. Então, minha pergunta é: você pode mudar isso? Eles estão lidando com o erro EM ALGUM LUGAR E, com o Apache sendo a cornucópia de configuração que é, é lógico que exista alguma diretiva em algum lugar para lidar com esse comportamento, mas não consegui encontrá-lo em várias horas de ajustes até agora.
Atualizar:
Eu tentei várias coisas, incluindo:
usando
ErrorDocument 400
diretivas para obter um script CGI e PHP que apenas enviaStatus 301
eLocation
cabeçalhos. Isso resulta em uma página em branco. UsarErrorDocument 400 https://hostname.tld:7443
simplesmente resulta na exibição desse link na página.O uso de quase todas as combinações entre
mod_rewrite
eu ou o Google pode ser feito, incluindo declarações gerais que direcionam o site inteiramente; estes nunca funcionam. Literalmente, eles não fazem nada. Estou supondo que o Apache esteja chutando o erro acima antes mesmo de tentar processar as diretivas de reescrita.
Não posso usar redirecionamentos baseados em porta, devido ao uso personalizado da porta. Não posso usar redirecionamentos baseados em script porque eles nunca são exibidos devido à incompatibilidade http / https. Estou quase disposto a atribuir isso a um bug ou a um comportamento não intencional, mas alguém teve a intenção de colocar uma mensagem de erro muito personalizada lá, não se incomodou em pensar que talvez você queira apenas ir ao mercado URL que eles já estão fornecendo ?