php - 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
任何帮助表示赞赏。谢谢!
解决方案
我会推荐一个链接解析器。
但这里有一个基于您的代码的示例,用于剥离和继承 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;
?>
推荐阅读
- python - 比较不同List python中两个元组的项目
- c# - 使用端点时,ASP.NET Core(3.0) 上的标识不起作用
- android - 使用 CardView 和 ImageView 的圆角
- dask - 使用 dask 机会性缓存(或其他)避免 io 的策略
- r - 使用 fable 包的预测中的准确度表中只有 NaN
- regex - 正则表达式匹配一个或两个模式
- node.js - 点击时有角度的谷歌图表颜色国家
- ios - 颤振设备命令未在 Mac 中显示我的 iPhone
- python - Keras:使用 BilSTM keras 微调 ELMo 嵌入
- c++ - 有没有办法将 INT 和字符串存储在同一个数组中?