PHP:301重定向页面,同时维护GET变量

时间:2011-08-01 23:26:46

标签: php redirect

我有一个页面已被一个不同名称的新页面替换,有没有办法重定向此页面,同时保持在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变量组合的解决方案。

4 个答案:

答案 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。这样,您就可以重写所有内容 - GETPOST等等。

如果您想在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");