Saya memiliki server Apache 2.2 dengan sertifikat SSL yang menampung beberapa layanan yang hanya dapat diakses menggunakan SSL.
yaitu: https : //myserver.com/topsecret/ harus diizinkan sementara http : //myserver.com/topsecret/ harus ditolak atau, idealnya, dialihkan ke https.
http://myserver.com/public tidak boleh memiliki batasan ini, dan harus bekerja menggunakan http atau https.
Keputusan untuk mengizinkan / menolak http dibuat di direktori tingkat atas, dan memengaruhi semua konten di bawahnya.
Apakah ada arahan yang dapat ditempatkan di konfigurasi Apache untuk membatasi akses dengan cara ini?
sumber
Dalam konfigurasi global Anda dapat menggunakan:
Anda juga dapat menggunakan file .htaccess di direktori pertama pohon direktori aman:
Yang terakhir itu juga bisa ditempatkan di dalam direktori directive dalam konfigurasi host global atau virtual.
sumber
Atau, Anda bisa menggunakan bahasa sisi server untuk melakukan pemrosesan untuk Anda, daripada menggunakan opsi konfigurasi Apache (jika, mungkin, Anda tidak memiliki akses ke konfigurasi server).
Misalnya, dengan PHP:
(meskipun hanya perlu diketahui - jika Anda menggunakan ISAPI di Microsoft IIS, jika permintaan tidak dialihkan melalui HTTPS, maka nilai variabel $ _SERVER ['HTTPS'] akan "mati")
sumber
Seseorang menyebutkan SSLRequireSSL tetapi saya tidak berpikir itu bekerja dengan sendirinya dan saya belum menemukan contoh yang sukses dengannya. Cara yang disarankan adalah https://wiki.apache.org/httpd/RedirectSSL Saya telah menerapkannya dan berfungsi dengan baik!
sumber
Dengan asumsi Anda menggunakan arahan VirtualHost,
Tempatkan direktif Direktori di virtualhost non-ssl yang menolak akses.
Lalu, letakkan direktif Direktori di virtualhost yang memberikan akses ssl.
sumber
Saya selalu melakukan mod_rewrite ini dalam file .htaccess, meskipun Anda harus dapat melakukannya dalam file konfigurasi utama Anda juga.
Berikut adalah panduan dengan beberapa cara untuk mewujudkannya: Smart HTTP dan HTTPS RewriteRule Redirects
sumber