Es scheint ein ganz schöner Akt zu sein, WordPress beizubringen, dass man gerne HTTP und HTTPS parallel verwenden möchte. Wer der Blog über HTTPS nutzen möchte, kann das seit gestern wieder tun, einfach mal das http:// in der URL durch ein https:// ersetzen, schon kommt die Seite verschlüsselt durchs Netz.
Einziges Problem: WordPress verwendet intern absolute URLs. Das bedeutet, sobald man auf einen Link klickt, ist man wieder über HTTP unterwegs, da in der Datenbank nunmal die HTTP-URL als Basis für alle Links eingetragen ist. Ich möchte allerdings auch niemanden zwingen, HTTPS zu benutzen – jeder soll das selbst entscheiden. Nicht zuletzt gibt es auch Feedreader, die das nicht so gerne mögen und die will ich natürlich nicht aussperren.
Ich muss also WordPress irgendwie beibringen, zu erkennen, ob es über HTTP oder HTTPS aufgerufen wird. Einfach wäre es ja, wenn man das in einer Konfigurationsdatei einstellen könnte. Dann könnte man zwei Installationen machen, die absolut gleich sind, bis auf diese eine Datei. Geht aber nicht, denn diese Einstellung steht in der Datenbank. Die Datenbank bis auf einen einzelnen Eintrag spiegeln? Unpraktikabel…
Also wird mir als einzige Lösung nur bleiben, in der Funktion, wo WordPress sich seine eigene Basis-URL holt (und diese Funktion ist grundsätzlich zuständig für das Holen von Einstellungen aus der Datenbank) speziell darauf zu prüfen, ob die Seite grade über HTTP oder über HTTPS aufgerufen wurde und das dann jedesmal zu ersetzen…
Falls jemand bessere Ideen hat: Immer her damit!
Wie wäre es mit einer einfachen mod_rewrite Anweisung, die prüft ob beim Referer https verwendet wurde und dann einfach, wenn das der Fall ist, die Anfrage entsprechend umleitet. Zwar nicht unbedingt die schönste Variante, aber eine der einfacheren. Vor allem muss man dann nicht bei jedem Update den Code wieder ändern.
Wobei da wäre die Alternative natürlich einfach ein Erweiterung. Für die Adminoberfläche hatte ich mal was im Einsatz, aber generell noch nicht.
Hmm. Also, ich habs noch nicht testen können, aber vielleicht hilft ja dieses Plugin.
Oh ja, das ist ein Akt. Ich habe mir schlussendlich ein kleines Plugin geschrieben, das nen Filter zu den Optionen “siteurl” und “home” hinzufügt – reicht bei mir soweit. Ich kanns dir gerne schicken, wenn du interessiert bist ;-)
So, das Plugin scheint jetzt ja erstmal halbwegs zu funktionieren – mal sehen, wie es sich schlägt. Wer möchte, kann ab jetzt einfach das http:// in unserer Blog-URL durch https:// ersetzen und es wird – hoffentlich – alles funktionieren wie bisher, bloß verschlüsselt. :)
Wie wäre es, wenn man bei allen Links Protokoll und Hostnamen rausnimmt, also href=”/page” statt href=”http://host/page”? Dann baut der Browser die korrekte absolute URL selbst zusammen. Genauso wie bei relativen URLs.
Nachtrag: Die Lösung ist recht einfach: siehe meinen Patch auf http://trac.wordpress.org/ticket/6890
Wie ich sehe tut das ganz bei euch noch wunderbar. Wie habt ihr es geloest? Ich kaempfe grade mit WP 2.7.1 und dem selben Problem rum. Der Patch von Thomas hilft bei 2.7.1 leider nicht weil das in der canonical.php schon genau so drin steht.
WordPress mit HTTPS…
Nachdem ich hier schon vor Jahren einige Mühe mit HTTPS hatte und es nun auch gestern noch nicht so wollte, scheint sich meine nicht sehr elegante, aber dafür kurze und schmerzlose Lösung nun zu bewähren. Was habe ich gemacht? In wp-config.php steht nu…