aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/functions.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/functions.php')
-rw-r--r--phpBB/includes/functions.php12
1 files changed, 11 insertions, 1 deletions
diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php
index 0a10a9604c..a6c03098c2 100644
--- a/phpBB/includes/functions.php
+++ b/phpBB/includes/functions.php
@@ -2645,7 +2645,7 @@ function generate_board_url($without_script_path = false)
*/
function redirect($url, $return = false, $disable_cd_check = false)
{
- global $db, $cache, $config, $user, $phpbb_root_path, $phpbb_filesystem;
+ global $db, $cache, $config, $user, $phpbb_root_path, $phpbb_filesystem, $phpbb_path_helper;
$failover_flag = false;
@@ -2662,6 +2662,16 @@ function redirect($url, $return = false, $disable_cd_check = false)
// Make sure no &'s are in, this will break the redirect
$url = str_replace('&', '&', $url);
+ // The url currently uses the web root path.
+ // However as we prepend the full board url later,
+ // we need to remove the relative web root path and
+ // prepend the normal root path again. Otherwise redirects
+ // from inside routes will not work as intended.
+ if ($phpbb_path_helper instanceof \phpbb\path_helper)
+ {
+ $url = $phpbb_path_helper->remove_web_root_path($url);
+ }
+
// Determine which type of redirect we need to handle...
$url_parts = @parse_url($url);