HTTPS mit .htaccess vor Ort mit Wordpress im Unterordner erzwingen

4798
Jan Doggen

Ich kann meine .htaccess-Datei nicht dazu bringen, HTTPS-Verkehr zu erzwingen

Site-Struktur, die ich sehe, wenn ich zu meinem Hosting-Provider ftp:

/ domains mydomainname.com public_html blog 
  • Die Dateien für meine Site beginnen in public_html( index.htmletc)
  • Ich habe eine WordPress-Installation in blog
  • Wordpress-Einstellungen wurden auf https: gesetzt (Allgemeine Einstellungen werden https://www.mydomainname.com/blogals Wordpress-URL genannt).
  • Das SSL-Zertifikat funktioniert einwandfrei, wenn ich zur Domäne gehe
  • Anfangs gab es nur ein .htaccessin blog, bestehend aus:

# BEGIN WordPress

RewriteEngine On
RewriteBase / Blog /
RewriteRule ^ index.php $ - [L]
RewriteCond% ! -F
RewriteCond% !
-D RewriteRule. /blog/index.php [L]

# ENDE WordPress

Alle Arten von Tutorials, die ich sehe, erwähnen, dass ich dies am Anfang hinzufügen sollte .htaccess:

RewriteEngine On RewriteCond % 80 RewriteRule ^(.*)$ https://www.mydomainname.com/$1 [R,L] 

.. und dass ich diese Datei "im Stammverzeichnis meiner Site" platzieren sollte.

Wenn ich keine (andere) .htaccessDatei habe:

  • Ich kann browsen https://www.mydomainname.com, folge den Links in den WP-Blog und stöbere dort alles https:
  • Wenn ich auf gehe http://www.mydomainname.com, folge den Links in den WP-Blog. Diese werden in https umgewandelt:

Wenn ich einen geänderten Zugriff auf mehrere Standorte platziere, bekomme ich Probleme wie (abhängig davon, welche .htaccessInhalte / Orte ich versuche):

  • Wenn ich dazu gehe, www.mydomainname.comleite ich weiter https://www.mydomainname.comund erhalte "Server nicht gefunden"; oder:
  • Kein Erzwingen von http: zu https:

Fragen:

  • Sollte das .htaccessin mydomainname.comoder platziert werden public_html(dh welcher Ordner ist das berühmte "Stammverzeichnis meiner Site")? Ich habe beide probiert
  • Muss es auch platziert werden blog? Wenn ja, müssen sie identisch sein?
  • Was ist der richtige Inhalt der .htaccessDatei (en)?

Ich habe alle möglichen Varianten ausprobiert, kann es aber nicht zum Laufen bringen - offensichtlich noch nicht die richtige Variante.

FWIW: Ich gehe davon aus, dass mein Hosting-Provider Apache verwendet. Ich habe keine Kontrolle über die Konfiguration.

1
Denken Sie daran, dass einige Browser die Webseite zwischenspeichern und der .htaccess daher möglicherweise nicht ordnungsgemäß umgeleitet wird? Chrome ist davon besonders verrückt. Shift-F5 sollte ein Force-Reload durchführen, aber manchmal funktioniert das auch nicht und Sie müssen den Cache wirklich über das Chrome-Menü leeren. Ich bin gestolpert, als ich genau dasselbe zum Laufen brachte, und als ich es in einem anderen Browser ausprobierte und alles funktionierte, fiel mir auf, dass es der Cache war, der mir Streiche spielte. LPChip vor 6 Jahren 0
Eine andere bedauerliche Möglichkeit ist, dass Ihr Provider `.htaccess` möglicherweise nicht oder nicht alle möglichen Funktionen zulässt. Dies gilt insbesondere für Shared Hosting, bei dem die Websites mehrerer Kunden auf demselben Server gehostet werden. jpaugh vor 6 Jahren 0
@LPChip Ich starte den Browser neu (und warte) Jan Doggen vor 6 Jahren 0
Mein Provider erlaubt htaccess. Auf einer ihrer Support-Seiten werden diese drei Zeilen und der Satz "im Hauptordner Ihrer Website" erwähnt. Jan Doggen vor 6 Jahren 0
@JanDoggen Ein Neustart des Browsers reicht nicht aus, um den Cache zu löschen. Umschalt + F5 sollte dies tun; Sie können auch einen anderen Browser verwenden, den Sie normalerweise nicht verwenden. oder Sie könnten versuchen, den Cache zu löschen. [Hier ist eine App] (https://chrome.google.com/webstore/detail/clear-cache/cppjkneekbjaeellbfkmgnhonkkjfpdn), die dies bequem tut. Haftungsausschluss: nie benutzt. jpaugh vor 6 Jahren 0
Ich habe alle ausprobiert. einschließlich Strg-F5. Meine Tests haben sich auch auf mehrere Tage, neue Zertifikate usw. ausgedehnt. Jan Doggen vor 6 Jahren 0

2 Antworten auf die Frage

1
wp78de

Ich würde argumentieren, dass Sie Ihre neue .htaccess-Datei im Ordner public_html ablegen sollten.

Versuchen Sie Folgendes mit mod_rewrite in Ihrer .htaccess-Datei

RewriteEngine On # This will enable the Rewrite capabilities RewriteCond % !=on # This checks to make sure the connection is not already HTTPS RewriteRule ^/?(.*) https://%/$1 [R,L] # This rule will redirect users from their original location, to the same location but using HTTPS. # i.e. http://www.example.com/foo/ to https://www.example.com/foo/ # The leading slash is made optional so that this will work either in httpd.conf or .htaccess context 

Diese drei Zeilen müssen auch zur .htaccess-Datei im blogOrdner hinzugefügt werden, um den RewriteRuleUnterordner zu ändern:

RewriteRule ^/?(.*) https://%/blog/$1 [R,L] 

Es kann auch nützlich sein, mod_ssl anzuwenden, um SSL mit der SSLRequireSSL- Direktive zu erzwingen :

Diese Anweisung verbietet den Zugriff, es sei denn, HTTP über SSL (dh HTTPS) ist für die aktuelle Verbindung aktiviert. Dies ist in SSL-aktivierten virtuellen Hosts oder Verzeichnissen sehr praktisch, um Konfigurationsfehler zu schützen, die das zu schützende Material offenlegen. Wenn diese Anweisung vorhanden ist, werden alle Anforderungen abgelehnt, die kein SSL verwenden. Beachten Sie, dass dies nicht automatisch zu https umgeleitet wird.

Das ist es im Grunde. Ich habe der * .htaccess-Datei im Blog-Unterordner hinzugefügt, was * auch * getan werden muss Jan Doggen vor 6 Jahren 0
0
harrymc

Dies ist eine Zusammenfassung des Artikels Erzwingen Sie HTTPS auf allen Seiten Ihrer WordPress-Site. Dort wird beschrieben, wie Sie einen gesamten WordPress-Blog über HTTPS sicher machen können.

  1. Erzwingen Sie SSL für den Administrator und melden Sie sich an.
    Fügen Sie der wp-config.phpDatei im Stammverzeichnis Ihres WordPress-Verzeichnisses die folgende Zeile hinzu :
    define('FORCE_SSL_ADMIN', true);

  2. Stellen Sie https in den Einstellungen
    in Ihrem Wordpress - Administrator Dashboard auf Settings -> Generalund beiden URLs ändern müssen, https://statt http://:

  3. Aktualisieren Sie .htaccess
    Fügen Sie in der .htaccessDatei, die sich im Stammverzeichnis der WordPress-Anwendung befindet, Regeln zum Umschreiben hinzu :

    <IfModule mod_rewrite.c> RewriteEngine On RewriteCond % !^443$ RewriteRule (.*) https://%% [R=301,L] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond % !-f RewriteCond % !-d RewriteRule . /index.php [L] </IfModule> 

Es wurden zwei Zeilen hinzugefügt, die besagten, dass, wenn der aktuelle Port nicht 443 ist, die URL für die Verwendung von HTTPS mit einer 301-Umleitung neu geschrieben wird:

RewriteCond % !^443$ RewriteRule (.*) https://%% [R=301,L] 
  1. Leeren Sie alle Caches für Ihre Anwendung