Mam serwer Apache 2.2 z certyfikatem SSL, na którym znajduje się kilka usług, do których dostęp powinien odbywać się wyłącznie przy użyciu SSL.
tzn .: https : //myserver.com/topsecret/ powinno być dozwolone, podczas gdy http : //myserver.com/topsecret/ powinno być albo odrzucone, albo, najlepiej, przekierowane do https.
http://myserver.com/public nie powinien mieć tego ograniczenia i powinien działać przy użyciu protokołu HTTP lub https.
Decyzja o zezwoleniu / odmowie http jest podejmowana w katalogu najwyższego poziomu i wpływa na całą zawartość pod nim.
Czy istnieje konfiguracja, którą można umieścić w konfiguracji Apache w celu ponownego uzyskania dostępu w ten sposób?
źródło
W konfiguracji globalnej możesz użyć:
Podobnie możesz użyć pliku .htaccess w pierwszym katalogu bezpiecznego drzewa katalogów:
Ten ostatni można również umieścić w dyrektywie katalogowej w konfiguracji hosta globalnego lub wirtualnego.
źródło
Alternatywnie możesz użyć języka po stronie serwera, aby wykonać przetwarzanie za Ciebie, zamiast korzystać z opcji konfiguracji Apache (jeśli być może nie masz dostępu do konfiguracji serwera).
Na przykład z PHP:
(choć należy pamiętać - jeśli używasz ISAPI w Microsoft IIS, jeśli żądanie nie jest kierowane przez HTTPS, wówczas wartość zmiennej $ _SERVER ['HTTPS'] będzie „wyłączona”)
źródło
Ktoś wspomniał o SSLRequireSSL, ale nie sądzę, aby działał sam i nie znalazłem z nim udanego przykładu. Zalecany sposób to https://wiki.apache.org/httpd/RedirectSSL Zastosowałem to i działa dobrze!
źródło
Zakładając, że korzystasz z dyrektyw VirtualHost,
Umieść dyrektywę Directory w wirtualnym hoście innym niż ssl, odmawiając dostępu.
Następnie umieść dyrektywę katalogową w wirtualnym hoście ssl udzielającym dostępu.
źródło
Zawsze robiłem ten mod_rewrite w pliku .htaccess, chociaż powinieneś być w stanie to zrobić również w głównym pliku konfiguracyjnym.
Oto przewodnik z kilkoma sposobami na dokonanie tego: Inteligentne przekierowania HTTP i HTTPS RewriteRule
źródło