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