根据发送的参数进行动态重定向

时间:2016-07-01 17:30:07

标签: php redirect parameter-passing url-redirection url-parameters

假设我有一个参数化的网址,以重定向到其他网址。

示例:

http://XxxXX.net/redirect.php?param1={param1}&param2={param2}&param3={param3}&param4={param4}

我在redirect.php中有以下内容

<html><head>
     <script>
     function getURLParameter(name) {
         return decodeURI(
                (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || [, null])[1] || ''
            );
        }
</script>

    <script>
    var param1 = getURLParameter('param1'); 
    var param2 = getURLParameter('param2'); 
    var param3 = getURLParameter('param3'); 
    var param4 = getURLParameter('param4'); 

    var url = 'http://xxxx.xxxxx.net/yyyy/'+param1+'?param2='+param2+'&param3='+param3+'&param4='+param4';

  </script>
</head>
<?php    
header('Location: url');    
?>
<body>

</body></html>

现在,我们的想法是来自第一个调用redirect.php的url的参数可以填充我想要的recirect.php。

然后根据收到的参数重定向到动态网址。

这可能吗?

我的代码可能有问题,请帮助我。

2 个答案:

答案 0 :(得分:2)

即使这个问题有一个公认的答案,我提供以下解决方案,因为:

  1. 问题被标记为PHP,而不是JavaScript
  2. 接受的答案不是最初要求的动态解决方案
  3.   

    然后根据收到的参数重定向到动态网址。

    示例网址:http://localhost/test.php?hello=world&foo=bar

    获取查询字符串参数:

    $query = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY);
    parse_str($query, $result);
    
    echo '<pre>';
    print_r($result);
    echo '</pre>';
    

    输出:

    Array
    (
        [hello] => world
        [foo] => bar
    )
    

    执行重定向:

    header('Location: http://www.example.com/?' . http_build_query($result));
    

    这会重定向到:http://www.example.com/?hello=world&foo=bar

答案 1 :(得分:1)

你需要在PHP中进行重定向吗?

如果没有,您可以window.location = url;window.location.replace(url);