Ich drehe mit dem Kram noch durch, sitze den ganzen Tag schon dran, RewriteRules, ProxyPass alles erdenkliche getestet.
Die fehlerhafte Stelle hat MLan ja schon identifiziert.
In der Function url() die Zeilen 1148 bis 1154 auskommentieren, und der 403 kommt nicht.
Code: Select all
1147 else {
1148 if (isset($_SERVER['REQUEST_URI'])) {
1149 $prefix = preg_replace('/[?&].*$/', '', $_SERVER['REQUEST_URI']) ?: './';
1150 }
1151 else {
1152 $prefix = './';
1153 }
1154 }
1155 return $prefix . $url;
Es reicht auch, das $prefix in Zeile 1155 zu entfernen.
Also, die Funktion prüft ob $_SERVER['REQUEST_URI']) gesetzt ist, wenn ja führt sie die Zeile mit der Regex aus.
Bei meiner Config steht in der REQUEST_URI "/webmail/".
Testweise vorher und hinterher ein echo:
Code: Select all
echo "pre1:$prefix";
$prefix = preg_replace('/[?&].*$/', '', $_SERVER['REQUEST_URI']) ?: './';
echo "pre2:$prefix";
Ergibt "pre1:pre2:/webmail/"
return $prefix . $url schmeisst den 403, return $url klappt.
Hat jemand ne Idee, warum das hinter ProxyPass knallt aber direkt aufgerufen nicht?
Für den Moment behelfe ich mir damit, nur "return $url" zu verwenden.
Aber das kann nicht die Lösung sein.
Dafür geht es dann mit der Config:
Code: Select all
ProxyPass /.well-known/ !
SSLProxyEngine On
ProxyPass "/" "https://keyhelp.lab.24unix.net/webmail/"
und in der URL steht:
https://webmail.lab.24unix.net/?_task=mail&_mbox=INBOX
Edit:
Wenn ich Roundcube via Tools => Webmail aufrufe kommt auch "pre1:pre2:/webmail/" raus.
RC direkt aufgerufen, debug von von $prefix und $prefix . $url:
pre1:pre2:/webmail/
res: /webmail/ . ?_task=mail
Via webmail-domain:
pre1:pre2:/webmail/
res: /webmail/ . ?_task=mail
also identisch.
Sehr merkwürdig.
Ich gehe jetzt mit Xdebug dran.
Edit2:
Was mir aufgefallen ist: er baut die Seite ganz kurz auf, dann kommt der 403.