我有一个页面已被一个不同名称的新页面替换,有没有办法重定向此页面,同时保持在URL中传递_GET变量。
我现在拥有的东西:
old-page.php
header('Location: http://www.example.com/new-page.php', true, '301');
当用户导航到old-page.php?var=1
这样的网址时,他们会被带到new-page.php
,如何才能将其重定向到new-page.php?var=1
?查询字符串可以是几个不同的东西,所以我想要一个可以使用任何get变量组合的解决方案。
答案 0 :(得分:4)
header('Location: http://www.example.com/new-page.php'
.(!empty($_SERVER['QUERY_STRING'])?'?'.$_SERVER['QUERY_STRING']:''),
true, '301');
答案 1 :(得分:0)
您可以使用会话:
session_start();
$_SESSION['your var'] = "value";
或者您可以在重定向网址
中传递它header('Location: http://www.example.com/new-page.php?key=value', true, '301');
答案 2 :(得分:0)
如果您使用的是Apache,则可以使用全能的mod_rewrite。这样,您就可以重写所有内容 - GET
,POST
等等。
如果您想在PHP中执行此操作,为了使其正确(tm),您还需要考虑$_SERVER['HTTPS']
,$_SERVER['HTTP_HOST']
和$_SERVER['SERVER_PORT']
。仅仅因为在自定义端口上运行HTTPS时,您可能不希望使用默认端口重定向到HTTP。
答案 3 :(得分:0)
你能做点什么:
$parse = '';
foreach($_GET as $i => $j)
$parse .= "$i=$j&";
$parse = (strlen($parse) > 0 ? "?" : "") . substr($parse, 0, -1);
header("Location: old-page.php$parse");