Przedmowa
Po pierwsze: zwykły port 80 -> przepisanie portu 443 NIE naprawi tego. W prawie każdym poprzednim pytaniu, wątku pocztowym, wątku forum itp. Znalazłem, że była to pierwsza ignorancka odpowiedź i kilka razy papugowałem.
Po drugie: Tak, wiem, że nie możesz obsługiwać ruchu HTTP i HTTPS na tym samym porcie. To nie tak.
Scenariusz:
Serwer Apache hostujący wiele witryn poprzez mnożenie portów. Port 80 obsługuje witrynę publiczną. Port 443 obsługuje bezpieczną wersję tej witryny.
Porty 7443, 8443 i 9443 obsługują osobne witryny zabezpieczone protokołem SSL.
Jeśli użytkownik pomyli adres URL lub poda nieprawidłowy link, powiedz http: //nazwa_hosta.tld: 7443 , otrzyma następującą śmieszną stronę:
Zamiast serwera po prostu przekierowuję je na https: //hostname.tld: 7443 .
Moje pytanie brzmi: w jaki sposób, w imię dziury Zeusa, możesz zmodyfikować zachowanie Apache lub ten komunikat o błędzie, aby automatycznie przekierować użytkownika?
Apache oczywiście obsługuje żądanie inne niż https (aby wyświetlić ten komunikat o błędzie), nawet jeśli jest skonfigurowany do HTTPS. Wydaje mi się niezwykle głupie, że nie tylko domyślnie przekierowuję, ale rozumiem, dlaczego zachowali się tak, jak oni, nawet jeśli się z tym nie zgadzam. Moje pytanie brzmi: czy możesz to zmienić? Obsługują błąd GDZIEKOLWIEK, a ponieważ Apache jest konfiguracją róg obfitości, jest oczywiste, że istnieje jakaś dyrektywa, która poradziłaby sobie z tym zachowaniem, ale do tej pory nie udało mi się go znaleźć przez kilka godzin majstrowania.
Aktualizacja:
Próbowałem różnych rzeczy, w tym:
używając
ErrorDocument 400
dyrektyw, aby dostać się do CGI i skryptu PHP, który właśnie wysyłaStatus 301
iLocation
nagłówki. Powoduje to, że strona jest pusta. UżycieErrorDocument 400 https://hostname.tld:7443
po prostu powoduje wyświetlenie tego linku na stronie.Używając prawie każdej kombinacji
mod_rewrite
I lub Google, można wymyślić, w tym ogólne oświadczenia, które całkowicie kierują witryną; te nigdy nie działają. Dosłownie nic nie robią. Zastanawiam się, że Apache wykrywa powyższy błąd, zanim nawet spróbuje przetworzyć dyrektywy przepisujące.
Nie mogę używać przekierowań opartych na portach z powodu niestandardowego użycia portu. Nie mogę używać przekierowań opartych na skryptach, ponieważ nigdy nie są obsługiwane z powodu niezgodności http / https. Prawie jestem skłonny przypisać to błędowi lub niezamierzonemu zachowaniu, ale ktoś miał dość czasu, aby umieścić tam niestandardowy komunikat o błędzie, nie zawracał sobie głowy myśleniem, że może chcesz po prostu pojechać do Adres URL, który już podają ?