首页 > 解决方案 > 使用 PHP 重定向并跳过特定参数

问题描述

由于我已经开始在我的网站中使用友好的 URL,我将每个页面重定向到新版本,前提是注册用户的个人资料中有“用户名”。

所以,我正在重定向:

https://tribbr.me/post.php?id=850

和:

header("Location:/".$if_username."/post/".$post_id."?".$_SERVER['QUERY_STRING']); exit();

保留所有 GET 参数....但问题是这个标头请求,显然$_SERVER['QUERY_STRING']也将 post id 添加到 URL,并且在重定向时,这是最终 URL:

https://tribbr.me/TribeMasters/post/850?id=850

是否可以将id=850参数跳过到 URL 重定向?因为它是一个重复的参数:post/850并且id=850是相同的。

谢谢你帮助我:)

标签: phpredirecthttp-headers

解决方案


大卫沃尔什在这方面做了一篇很好的文章

https://davidwalsh.name/php-remove-variable

function remove_querystring_var($url, $key) { 
    $url = preg_replace('/(.*)(?|&)' . $key . '=[^&]+?(&)(.*)/i', '$1$2$4', $url . '&'); 
    $url = substr($url, 0, -1); 
    return $url; 
}

推荐阅读