Ich verwende eine WP Multisite mit Unterdomänen. Ich möchte das SSL-Protokoll für alle Anforderungen erzwingen und habe ein Problem mit Nicht-SSL-Anforderungen auf meinen untergeordneten Websites. Ich verwende das WP SSL Plugin erzwingen. Ich habe ein bisschen herumgebuddelt und die folgende .htaccess-Direktive ausprobiert, aber sie funktioniert nicht (und macht auch nichts):
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
Zum Beispiel:
http://child1.derpsite.tld/cgi-sys/defaultwebpage.cgi
EDIT 1
Ich habe sowohl meinen Host (dedizierter Server, auf dem cPanel installiert ist) als auch cPanel (mit dem ich noch ein offenes Ticket habe) kontaktiert. cPanel hat erwähnt:
Apache auf cPanel ist etwas anders konfiguriert als andere Server, an die Sie möglicherweise gewöhnt sind. Standardmäßig akzeptiert Apache alle angeforderten Domainnamen, da diese als Platzhalter eingerichtet sind. Auf cPanel-Servern werden die virtuellen Hosts speziell für die von Ihnen erstellten Domänen konfiguriert. Wenn Sie zum Beispiel das cPanel-Konto für mängelanwärter.com erstellt haben, hat es eine Konfiguration eingerichtet, die spezifisch für mängelanwärter.com ist. Angenommen, ich verweise den DNS für meine Domain thisisarealdomain.com auf Ihren Server. Wenn ich die Anfrage für thisisarealdomain.com mache, überprüft Apache die Konfiguration für diese Domain, findet sie nicht und gibt dann die cPanel-Standardseite zurück.
Es hört sich so an, als hätten Sie DNS richtig konfiguriert. Ich gehe von einem Platzhalter-Subdomain-Datensatz aus, der auf Ihren Server verweist, aber Apache weiß nicht, was mit den angeforderten Elementen zu tun ist. Zumindest auf der Nicht-SSL-Seite. Das Problem sollte gelöst werden, indem in cPanel [ https://documentation.cpanel.net/display/ALD/Subdomains ] eine Platzhalter-Unterdomäne hinzugefügt wird, damit der Apache-Host für * .derpsite.tld hinzugefügt wird. Wenn dann irgendetwas. Derpsite.tld angefordert wird, kann Apache diesen vhost finden und wissen, was zu laden ist.
Der Grund, warum die SSL-Version möglicherweise funktioniert, ist wahrscheinlich, dass Sie SSL als * .derpsite.tld installiert haben, wodurch dieser SSL-vhost erstellt wird.
Aufgrund dieser Eingabe habe ich:
500 internal server error
für http://child1.derpsite.tld
und https://child1.derpsite.tld
ausgegeben.EDIT 2
Der 500 internal server error
oben scheint das Ergebnis der Installation von SSL auf einer Wildcard-Domain gewesen zu sein. Bitte beachten Sie meine ' Antwort ' unten
Aus der Beschreibung des Fehlers geht hervor, dass Sie bei dem Versuch, auf das untergeordnete Element über http zuzugreifen, anscheinend überhaupt nicht auf Ihre kontobezogene Software zugreifen. Dies klingt nach einem Webserver-Konfigurationsfehler. In Ihrem Fall müssen Sie sicherstellen, dass Sie in Ihrem cpanel Subdomains für http und nicht nur für https aktiviert haben
Da dies als zwei verschiedene Domänen klassifiziert ist, muss dies in zwei Teilen erfolgen. Versuche dies:
RewriteEngine On
RewriteCond %{HTTP_Host} ^derpsite\.tld [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://derpsite.tld/$1 [R,L]
RewriteCond %{HTTP_Host} ^child1\.derpsite\.tld [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://child1.derpsite.tld/$1 [R,L]
Normalerweise müssen Sie keine Plugins ausführen, um SSL zu erzwingen, wenn Sie WebSever ordnungsgemäß konfiguriert haben.
Sie brauchen nur Settings -> General
und ändern beide URLs so, dass sie https://
und nicht http://
enthalten. Auch das Löschen der Caching-Plugins ist immer eine gute Idee. Wie ich sehe, sind die SSL-Zertifikate vorhanden und funktionieren für Sie basierend auf Ihren Angaben.
Der Kern dieses Plugins ist der folgende:
// "The Core"
define('FORCE_SSL' , true);
if (defined('FORCE_SSL'))
add_action('template_redirect', 'force_ssl');
function force_ssl(){
if ( FORCE_SSL && !is_ssl () )
{
wp_redirect('https://' . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'], 301 );
exit();
}
}
Wie Sie sehen können, wurde PHP oder WordPress verwendet, um die Umleitung zu erzwingen. Stattdessen sind diese Umleitungen auf Webserverebene besser und intelligenter. Es muss kein PHP verwendet werden.