Sven Rautenberg: PHP bei Proxyserver

Beitrag lesen

Moin!

Ich habe einen Link auf meine Subdomain mit dem Loginscript gelegt:

<p><a href="https://ssl.kundenserver.de/intern.xxx-xxx.de">Test mit ssl</a></p>

Dann erscheint auch wie erwartet der Sicherheitshinweis und ich gelange im Browser auf die Seite:

https://ssl.kundenserver.de/intern.xxx-xxx.de/

In dem Verzeichnis stehen 3 Dateien. index.php, login.php, login_check.php welche gegenseitig aufeinander zugreifen:

include("login.php");
require("login_check.php");

Worauf mein Browser auf folgende Adresse geht:

https://ssl.kundenserver.de/index.php3/

welche mit der Fehlermeldung:

Fehler: kein SSL-Proxy aktiviert! Für die angeforderte Domain ist kein SSL-Proxy konfiguriert. Falls Sie der Eigentümer der Domain sind, können Sie dies in Ihrem Konfigurationsmenü ändern.

Ursache der Fehlermeldung dürfte die falsche URL sein. Ich behaupte, dass dieser Fehler wohl eher von einem fehlerhaften Link verursacht wird, als von irgendwas, was in PHP programmiert ist (wenn PHP allerdings den fehlerhaften Link ausspuckt, hast du natürlich trotzdem verloren).

Als Hauptursache scheint mir möglich, dass du einen absoluten Link mit "/index.php3" angegeben hast. Das funktioniert ohne den SSL-Krams auf deiner http://intern.xxx-xxx.de wunderbar (denn da ruft der Link auf "/index.php3" immer die URL "http://intern.xxx-xxx.de/intern.php3" auf), aber sobald der SSL-Kram hinzukommt (aufgrund der Fehlermeldung vermute ich, dass 1&1 da einfach einen Proxy hingestellt hat, der im Prinzip alle Seiten per SSL abrufen kann - welche Domain er dafür nimmt, steht im ersten Verzeichnisnamen), führt ein Link "/index.php3" auf der Seite "https://ssl.kundenserver.de/intern.xxx-xxx.de/irgendwas.html" natürlich nicht zu "https://ssl.kundenserver.de/intern.xxx-xxx.de/index.php3", sondern zu "https://ssl.kundenserver.de/index.php3". Und weil der Proxy das erste Verzeichnis als Domainnamen interpretieren will, erfolgt erstmal ein Redirect auf "https://ssl.kundenserver.de/index.php3/" (man beachte den abschließenden Schrägstrich), und weil es keine Domain "http://index.php3" im Internet gibt (und erst recht nicht bei 1&1), erfolgt dann die Fehlermeldung.

Jetzt meine Frage: Wie schaffe ich es, das dies klappt.

Ich habe in dem Loginskript die Zeilen:

include("login.php3"); und require("login_check.php3");  welche mir die Probleme verursachen. Ich habe es schon mit

include("https://ssl.kundenserver.de/intern.xxx-xxx.de/login.php3");

und

include("www.intern.xxx-xxx.de/intern.xxx-xxx.de/login.php3");

versucht. Funktioniert aber nicht.

Logischerweise funktioniert das eher nicht. PHP kennt SSL-Verschlüsselung erst seit Version 4.3.0 wirklich richtig, vorher kann man über die URL-fopen-wrappers nur HTTP-Zugriffe machen.

Aber du willst auch gar nicht per HTTP includen. Die include()- und require()-Anweisung ist prima, so wie sie war. Der Fehler liegt, wie erwähnt, in der Verlinkung.

Wenn du die index.php3 mal direkt aufrufst, sollte die Seite eigentlich direkt angezeigt werden - es sei denn, du machst irgendwelche Redirects auf die falsche URL, oder gibst falsche Links aus. Dann kann es natürlich nicht funktionieren.

Die Links müssen entweder alle relativ sein (dürfen also nicht mit "/" beginnen)  oder server-absolut mit "https...(kompletter URL-Pfad hier rein)".

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)