====== Scheme relative URLs ======
Unter "scheme relative URLs" oder zu Deutsch relativen URLs versteht man Internetadressen, bei denen das führende Protkoll (z.B. ''http:'' oder auch ''https:'') weggelassen wird. Dies ist beispielsweise dann von Vorteil, wenn Webseiten sowohl unverschlüsselt (''http:'') als auch verschlüsselt (''https:'') verfügbar sind. Das Prinzip ist in RFC 3986 von 2005 erläutert: http://tools.ietf.org/html/rfc3986#section-4.2
BlackCat CMS verwendet seit Version 1.0.3 standardmäßig eine relative URL und trägt diese in die Datei ''config.php'' ein, wenn diese Version erstinstalliert wird. Bei einem Update von vorherigen Versionen bleibt der vorherige Eintrag unverändert.
Eingeführt wurde diese Änderung, um die Möglichkeit zu haben, das Backend über eine verschlüsselte Verbindung (''https:'') aufzurufen. In diesem Fall müßte das CMS ansonsten sämtliche URLs, die im Backend verwendet werden (Links, Bilder, CSS-Dateien, JavaScripts, ...), filtern und anpassen, je nachdem, ob der Aufruf per HTTP oder per HTTPS erfolgt ist.
In der Folge können jedoch Probleme mit älteren oder nicht entsprechend gestalteten Modulen auftreten. Siehe https://github.com/webbird/BlackCatCMS/issues/252
Das betrifft aktuell z.B. das kitFramework und die dortigen Erweiterungen imageTweak, FacebookGallery oder KeepInTouch.
**Abhilfe:**
Hier existieren im Grunde 3 Möglichkeiten, von denen jedoch nur zwei durch den Nutzer selbst angewendet werden können.
- Anpassung der Module, die nur mit absoluten URLs zurecht kommen (z.B. durch Verwendung von Zend_Http_Client anstelle von ''curl()'', Prüfung und ggfs. Ergänzung der ermittelten URL, o.ä.)
- Anpassung der URL in der ''config.php''; inkompatibel mit dem HTTPS-Patch
- Anpassung der Datei ''wb2compat.php'', sofern nur Module betroffen sind, die mit der Konstanten ''WB_URL'' arbeiten
**Anpassung config.php**
Hier ist folgende Zeile zu ergänzen:
define('CAT_URL', '///');
(Wobei '''' und '''' hier natürlich Platzhalter für die echten Werte in der jeweiligen BlackCat-Installation sind.)
**Anpassung wb2compat.php**
Die Datei ''wb2compat.php'' (im Verzeichnis ''./framework'') setzt alle Konstanten, die WB-Module benötigen, und erledigt einige andere Aktionen, die notwendig sind, um kompatibel zu WB zu sein. Hier findet sich folgende Zeile:
define('WB_URL', CAT_URL);
Diese kann bei Bedarf folgendermaßen geändert (im Sinne von ersetzt) werden:
$rel_parsed = parse_url(CAT_URL);
if(!array_key_exists('scheme',$rel_parsed ) || $rel_parsed['scheme']=='')
define('WB_URL', (isset($_SERVER['HTTPS']) ? 'https:' : 'http:') . CAT_URL);
else
define('WB_URL', CAT_URL);