rewrite_relative_url: cleanup resulting url path while rewriting

This commit is contained in:
Andrew Dolgov 2017-02-13 15:25:21 +03:00
parent ab39e213b3
commit 4a23031fcd
1 changed files with 9 additions and 0 deletions

View File

@ -2074,6 +2074,13 @@
return $parts['scheme'] . "://" . $parts['host'] . $parts['path']; return $parts['scheme'] . "://" . $parts['host'] . $parts['path'];
} }
function cleanup_url_path($path) {
$path = str_replace("/./", "/", $path);
$path = str_replace("//", "/", $path);
return $path;
}
/** /**
* Converts a (possibly) relative URL to a absolute one. * Converts a (possibly) relative URL to a absolute one.
* *
@ -2094,6 +2101,7 @@
} else if (strpos($rel_url, "/") === 0) { } else if (strpos($rel_url, "/") === 0) {
$parts = parse_url($url); $parts = parse_url($url);
$parts['path'] = $rel_url; $parts['path'] = $rel_url;
$parts['path'] = cleanup_url_path($parts['path']);
return build_url($parts); return build_url($parts);
@ -2108,6 +2116,7 @@
$dir !== '/' && $dir .= '/'; $dir !== '/' && $dir .= '/';
} }
$parts['path'] = $dir . $rel_url; $parts['path'] = $dir . $rel_url;
$parts['path'] = cleanup_url_path($parts['path']);
return build_url($parts); return build_url($parts);
} }