From 29b63583d527f568fa8ab2c2d25e11c83f89c33d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Pe=CC=81rez=20Crespo?= <jaime.perez@uninett.no> Date: Mon, 16 Sep 2019 12:35:56 +0200 Subject: [PATCH] Fix broken web server aliases / rewritten URLs This resolves #1023, resolves #1093 and closes #1095. --- lib/SimpleSAML/Module.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/SimpleSAML/Module.php b/lib/SimpleSAML/Module.php index 31e970bbb..2fd6426ea 100644 --- a/lib/SimpleSAML/Module.php +++ b/lib/SimpleSAML/Module.php @@ -133,7 +133,7 @@ class Module throw new Error\NotFound('No PATH_INFO to module.php'); } - $url = $request->getPathInfo(); + $url = $request->server->get('PATH_INFO'); assert(substr($url, 0, 1) === '/'); /* clear the PATH_INFO option, so that a script can detect whether it is called with anything following the @@ -168,10 +168,18 @@ class Module } $config = Configuration::getInstance(); + + // rebuild REQUEST_URI and SCRIPT_NAME just in case we need to. This is needed for server aliases and rewrites + $translated_uri = $config->getBasePath().'module.php/'.$module.'/'.$url; + $request->server->set('REQUEST_URI', $translated_uri); + $request->server->set('SCRIPT_NAME', $config->getBasePath().'module.php'); + $request->initialize($request->query->all(), $request->request->all(), $request->attributes->all(), + $request->cookies->all(), $request->files->all(), $request->server->all(), $request->getContent()); + if ($config->getBoolean('usenewui', false) === true) { $router = new Router($module); try { - return $router->process(); + return $router->process($request); } catch (FileLocatorFileNotFoundException $e) { // no routes configured for this module, fall back to the old system } catch (NotFoundHttpException $e) { -- GitLab