]> git.mjollnir.org Git - moodle.git/commitdiff
Ooops. The following-HTTP-standard absolute-path redirect thing didn't work with...
authorsam_marshall <sam_marshall>
Fri, 22 Sep 2006 10:48:37 +0000 (10:48 +0000)
committersam_marshall <sam_marshall>
Fri, 22 Sep 2006 10:48:37 +0000 (10:48 +0000)
lib/weblib.php

index 96244b93d8a55c96dc64576a661e88171f53f2a1..f10d32abeecb033eb842a52f2ef5f4c9c4d1188e 100644 (file)
@@ -4665,10 +4665,17 @@ function redirect($url, $message='', $delay=-1) {
         // paths - but still, might as well do it properly.)
         // This code turns relative into absolute. 
         if(!preg_match('/^[a-z]+:/',$url)) { 
-            // Add in the host etc. (from wwwroot) to the current folder
-            // from SCRIPT_NAME, then add the new target onto the end.
-            $url=preg_replace('/^(.*?[^:\/])\/.*$/','$1',$CFG->wwwroot).
-                rtrim(dirname($_SERVER['SCRIPT_NAME']),'/\\').'/'.$url;
+            // Get host name http://www.wherever.com
+            $hostpart=preg_replace('/^(.*?[^:\/])\/.*$/','$1',$CFG->wwwroot);
+            if(preg_match('/^\//',$url)) {
+                // URLs beginning with / are relative to web server root so
+                // we just add them in
+                $url=$hostpart.$url;
+            } else {
+                // URLs not beginning with / are relative to path of current
+                // script, so add that on.
+                $url=$hostpart.rtrim(dirname($_SERVER['SCRIPT_NAME']),'/\\').'/'.$url;
+            }
             // Replace all ..s
             while(true) {
                 $newurl=preg_replace('/\/[^\/]*\/\.\.\//','/',$url);