Kata pengantar
Pertama: A hanya Port 80 -> Port 443 Menulis Ulang TIDAK AKAN memperbaikinya. Di hampir setiap pertanyaan sebelumnya, utas email, utas forum, dll., Saya telah menemukan ini adalah jawaban bodoh pertama dan di-beo beberapa kali.
Kedua: Ya, saya tahu Anda tidak dapat melayani lalu lintas HTTP dan HTTPS di port yang sama. Bukan itu.
Skenario:
Apache Server meng-hosting beberapa situs melalui multiplikasi port. Port 80 melayani situs publik. Port 443 menyajikan versi aman situs itu.
Ports 7443, 8443, dan 9443 masing-masing melayani situs SSL-Diamankan terpisah.
Jika pengguna salah ketik URL, atau diberi tautan yang tidak valid, katakan http: //hostname.tld: 7443 , mereka diberi halaman konyol berikut:
Alih-alih server hanya mengarahkan mereka ke https: //hostname.tld: 7443 .
Pertanyaan saya adalah, bagaimana dengan nama butthole Zeus Anda dapat memodifikasi perilaku Apache atau pesan kesalahan ini untuk mengarahkan ulang pengguna secara otomatis?
Apache jelas melayani permintaan non-https (untuk menampilkan pesan kesalahan itu) meskipun itu dikonfigurasi untuk HTTPS. Tampaknya sangat bodoh bagi saya untuk tidak hanya melakukan redirect secara default, tapi saya bisa mengerti mengapa mereka mengikuti perilaku yang mereka lakukan, bahkan jika saya tidak setuju dengan itu. Jadi pertanyaan saya adalah: bisakah Anda mengubahnya? Mereka menangani kesalahan DI MANA SAJA, dan dengan Apache sebagai tumpah ruah konfigurasi itu, masuk akal ada beberapa arahan di suatu tempat untuk menangani perilaku ini, tapi saya belum dapat menemukannya dalam beberapa jam bermain-main sejauh ini.
Memperbarui:
Saya telah mencoba berbagai hal termasuk:
menggunakan
ErrorDocument 400
arahan untuk mendapatkan CGI dan skrip PHP yang baru saja dikirimStatus 301
danLocation
tajuk. Ini menghasilkan halaman kosong. MenggunakanErrorDocument 400 https://hostname.tld:7443
hanya menghasilkan link yang ditampilkan pada halaman.Menggunakan hampir setiap kombinasi
mod_rewrite
I atau Google dapat muncul, termasuk pernyataan selimut yang mengarahkan situs sepenuhnya; ini tidak pernah berhasil. Secara harfiah, mereka tidak melakukan apa-apa. Saya menduga bahwa Apache menendang ke kesalahan di atas bahkan sebelum mencoba untuk memproses arahan menulis ulang.
Saya tidak dapat menggunakan pengalihan berbasis port, karena penggunaan port khusus. Saya tidak dapat menggunakan pengalihan berbasis skrip karena mereka tidak pernah dilayani karena ketidakcocokan http / https. Saya hampir bersedia untuk mengubah ini menjadi bug, atau perilaku yang tidak disengaja, tetapi seseorang memiliki pemikiran sebelumnya untuk menempatkan pesan kesalahan yang sangat khusus di sana, mereka tidak repot-repot berpikir bahwa mungkin Anda hanya ingin pergi ke URL yang sudah mereka sediakan ?