wake-up-neo.net

Erzwingen des SSL-Protokolls für untergeordnete Sites mit mehreren Subdomänen + cPanel-Konfiguration

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:

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:

  • In cPanel wurde eine Wildcard-Subdomain hinzugefügt (und der Wurzelpunkt des Subdomain-Dokuments befindet sich im Hauptwebsite-Stammverzeichnis). Damit wird nun ein 500 internal server error für http://child1.derpsite.tld und https://child1.derpsite.tld ausgegeben.
  • Ich überprüfe derzeit, wie ich mein SSL eingerichtet habe

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

1
Ryan Dorn

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

2
Mark Kaplun

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]
0
SEO DEVS

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.

0
prosti