首页 > 解决方案 > PHP根据参数重定向到不同的URL

问题描述

我目前正在使用这个简单的重定向(将所有 URL 参数传递到下一页)来重定向链接:

    <?php
        function preserve_qs() {
        if (empty($_SERVER['QUERY_STRING']) && strpos($_SERVER['REQUEST_URI'], "?") === false) {
            return "";
        }
        return "?" . $_SERVER['QUERY_STRING'];
    }
    header("Status: 301 Moved Permanently");
    header("Location: https://example.com/" . preserve_qs());
    ?>

其中一个问题是我使用这种方法时需要为每个重定向创建一个单独的文件。

有没有可能把它变成我简单地在里面添加不同的 URL 并基于我调用的 URL 参数的东西,它将人们发送到正确的 URL。

例如,在 PHP 中,我们存储 3 个 URL,并为它们分配 3 个值(参数):

example1.com = page1
example2.com = page2
example3.com = page3

PHP 文件 URL 如下所示:

example.com/redirect.php?land=page1?restofparameters

请记住,其余参数需要发送到目标页面,而不是调用 PHP 文件中 URL 的 page1 参数。

因此,人们将登陆的目标 URL 将如下所示:

example1.com/?restofparamaters

任何帮助表示赞赏。谢谢!

标签: php

解决方案


我会推荐一个链接解析器。

但这里有一个基于您的代码的示例,用于剥离和继承 GET URL 参数。

<?php
  function preserve_qs() {
    if (empty($_GET)) return '';
    return '?'.http_build_query(array_diff($_GET, ['land']));
  }

  http_response_code(301);
  header('Location: https://example.com/' . preserve_qs());
  exit;
?>

推荐阅读