Habe Admidio zur Evaluation auf meiner gesicherten Testumgebung eingerichtet.
Leider habe ich probleme mit HTTPS:
Generell funktionieren alle bisher getesteten Seiten einwandfrei mit HTTPS, ausser automatische Weiterleitungen.
Sobald ich z.B. eine Einstellung Speichere werde ich automatisch auf HTTP statt HTTPS weitergeleitet.
(Die Einstellungen werden einwandfrei gespeichert, aber nachher erhalte ich die Meldung: "403 - Verboten: Zugriff verweigert.")
Der Webserver hat eine etwas spezielle Konfiguration: HTTPS-Seiten können NUR über HTTPS geöffnet werden und sind aus Sicherheitsgründen schon Serverseitig garnicht über HTTP erreichbar.
(Aus diesem Grund erscheint natürlich auch obige Meldung.)
Leider habe ich bisher im Quellcode nicht gefunden, wie die URL für die automatische Weiterleitung generiert wird.
Bin für jeden Hinweis dankbar.
Gruss
Christian
[Edit1]:
Ich arbeite mit der momentan aktuellen Version: 2.4.8
[Edit2]:
Habe eine mögliche Lösung gefunden.
Das Problem liegt bei der Funktion, wie die 'CURRENT_URL' ermittelt wird.
Habe durch reverse-engineering herausgefunden, dass der "Haken" offenbar an folgender Stelle lag:
admidio-2.4.8\adm_program\system\constants.php
(ab Zeile 35)
Code: Alles auswählen
// current called url (only this way possible, because SSL-Proxies couldn't be read with _SERVER parameter)
define('CURRENT_URL',$g_root_path. substr($_SERVER['SCRIPT_FILENAME'], strrpos($_SERVER['SCRIPT_FILENAME'], "/adm_")). '?'. $_SERVER['QUERY_STRING']);
}
else
{
define('CURRENT_URL', "http://". $_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI']);
}
Folgende Änderung scheint das Problem für mich gelöst zu haben (unterscheidung von HTTP/HTTPS):
Code: Alles auswählen
// current called url (only this way possible, because SSL-Proxies couldn't be read with _SERVER parameter)
define('CURRENT_URL',$g_root_path. substr($_SERVER['SCRIPT_FILENAME'], strrpos($_SERVER['SCRIPT_FILENAME'], "/adm_")). '?'. $_SERVER['QUERY_STRING']);
}
else if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") {
define('CURRENT_URL', "https://". $_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI']);
} else {
define('CURRENT_URL', "http://". $_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI']);
}
(Funktionalität mit Proxy / Reverse-Proxy habe ich bisher nicht getestet...)
[Edit3]
Uuuuund noch ein Nachtrag:
Hinter Reverse-Proxy (mit HTTPS) getestet und hat einwandfrei funktioniert.