https Umstellung bei TYPO3
Mixed Content Warnung
Manchmal gibt es auch Inhalte, welche Bilder oder andere Resourcen direkt von extern über http geladen werden. Das hat zur Folge, dass diese Inhalte nicht geladen werden oder es eine Mixed Content Warnung gibt.
Um diese auf der Datenbank zu suchen hilft diese Abfrage:
1 |
SELECT * FROM tt_content WHERE `bodytext` LIKE '%src=\"http:%' OR `bodytext` LIKE "%src=\'http:%'" OR `bodytext` LIKE '%src=http:%' |
Nun ersetzen wir das http durch https:
1 2 3 4 |
SET @search = 'src="http:'; SET @replace = 'src="https:'; UPDATE tt_content SET bodytext = REPLACE (bodytext, @search, @replace); |
Nochmals suchen, um zu sehen ob es funktoniert hat:
1 |
SELECT * FROM tt_content WHERE `bodytext` LIKE '%src=\"https:%'; |
Da nur src zu mixed content führt wars das. Man kann aber auch mal schauen, ob es jetzt überhaupt noch links als http hat:
1 |
SELECT * FROM tt_content WHERE `bodytext` LIKE '%http:%'; |
So finde ich etwa veraltete http links zu Google Maps und ersetzt diese:
1 2 3 |
SET @search = 'http://maps.google.'; SET @replace = 'https://maps.google.'; UPDATE tt_content SET bodytext = REPLACE (bodytext, @search, @replace); |
Oder links zur eigenen Seite:
1 2 3 4 |
SET @domain = 'www.teatimeforauniverse.com'; SET @search = CONCAT('http://',@domain); SET @replace = CONCAT('https://',@domain); UPDATE tt_content SET bodytext = REPLACE (bodytext, @search, @replace); |
Sed befehl für http zu https für Dateien
Zum Testen davor:
1 |
grep "http://" * |
1 |
sed -i 's|http://|https://|' * |
Zum Testen danach:
1 |
grep "https://" * |
External URL Suchen, die auf die Seite selbst verweisen.
Es gibt TYPO3-Installationen, welche Links auf sich selbst mit dem Seitentyp Link to External URL / Link zu externer URL setzen. Meistens ein hässlicher Workaround.
Ob Link to External URL / Link zu externer URL überhaupt jemals eingesetzt wurden, sieht man wenn man sich alle Einträge auflisten lässt, welche pages.url nicht leer haben.
1 |
SELECT * FROM pages WHERE `url` != ""; |
Gibt es keine Einträge, gibt es hier auch nichts zu korrigieren und das wars.
Wenn doch, geht die Analyse weiter:
Ist der TYPO3-Seitentyp „Link to External URL„, muss pages.doktype = 3 sein.
1 |
SELECT * FROM pages WHERE `url` != "" AND `doktype` = 3; |
Eigentlich ist der pages.urltyp = 1 wenn das Protokoll auf http und pages.urltyp = 2 wenn es https. Jedoch gibt es so Spezialisten die es schaffen, trotz Protokollangabe noch http reinzuschreiben. Diese Suchen wir:
1 2 3 4 |
SET @domain = 'teatimeforauniverse.com'; SET @domain = CONCAT('%',@domain, '%'); SELECT @domain; SELECT * FROM pages WHERE `url` LIKE '%http:%' AND `url` LIKE @domain AND `doktype` = 3; |
oder einfach nach urltyp = 1 suchen
1 |
SELECT * FROM pages WHERE `url` != "" AND `urltype` = 1; |
Wir schreiben es um und löschen das Protokoll raus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
SET @domain = 'teatimeforauniverse.com'; SET @search = CONCAT('http://', @domain); SET @replace = CONCAT('https://', @domain); UPDATE pages SET url = REPLACE (url, @search, @replace); SET @wwwdomain = CONCAT('www.', @domain); SET @search = CONCAT('http://', @wwwdomain); SET @replace = CONCAT('https://', @wwwdomain); UPDATE pages SET url = REPLACE (url, @search, @replace); # wenn https in url, dann setzen wir urltyp = 4 UPDATE pages SET urltype = 4 WHERE `url` LIKE '%https:%'; # ersetze https://example.com mit www.example.com ohne Protokoll SET @search = CONCAT('https://', @domain); SET @replace = CONCAT('www.', @domain); UPDATE pages SET url = REPLACE (url, @search, @replace); # wenn domain in url, dann setzen wir urltyp = 2 SET @search = CONCAT('%', @domain, '%'); UPDATE pages SET urltype = 2 WHERE `url` LIKE @search; |
Testing:
1 2 3 |
SELECT * FROM pages WHERE `url` != "" AND `urltype` = 1; SELECT * FROM pages WHERE `url` != "" AND `urltype` = 4; SELECT * FROM pages WHERE `url` != "" AND `urltype` != 4; |
Link von Bildern
1 2 3 4 |
SET @domain = 'www.teatimeforauniverse.com'; SET @search = CONCAT('http://', @domain); SET @replace = CONCAT('https://', @domain); UPDATE sys_file_reference SET link = REPLACE (url, @search, @replace); |
Testing:
1 2 3 |
SET @domain = 'www.teatimeforauniverse.com'; SET @search = CONCAT('%http://', @domain, '%'); SELECT uid, link FROM sys_file_reference WHERE `link`LIKE @search; |
Wenn ein Proxy eingesetzt wird, hilft dieses Konfiguration:
https://www.taywa.ch/blog/typo3/https-einstellungen-fuer-typo3-bei-nginx-vor-apache/