[英]Redirect based on Domain at URL-Variable
我目前正在为我的会员网站开发新的链接系统。 但是,即使我一直管理它,我在PHP领域还是相对缺乏经验。 会员链接具有不同的结构,我想通过PHP创建一个URL,并通过该URL自动提供该结构。 我无法很好地描述它,但是我仍然通过一个示例进行尝试:
用户X输入URL“ example.net/ref.php?url=NORMAL_URL”,并根据“ NORMAL_URL”中的域应用结构。 例如,将“?Aff = XYZ”添加到URL“ example.net/ref.php?url= http://example.de/ ”。 如果网址“ example.net/ref.php?url= http://example.nl/ ”指向“ affiliate_network.de/encoded_url=http%3A%2F%2Fexample.nl%2F”,希望至少有一点点了解。感谢您的帮助!
将网址发送到此函数中,它将preg_match与此处的正则表达式一起使用以提取域部分。
$matches
将是一个包含元素1中域的数组,因此您可以使用$matches[1]
找到它
此函数检查数组是否为空(找不到域),在这种情况下将返回null,然后使用开关将匹配的域与您可以指定的域列表进行比较,如果列出的域均不匹配,则它将再次返回null
在每种情况下,我只是简单地输入一个返回值,但是您可以发挥创造力,并在其中做任何您想做的事情,以按照您的应用程序所需的方式构建URL。
我建议不要将重定向放在此函数中,这在以后要维护应用程序时在语义上会造成混淆。 您应该检查函数的返回值,如果它不为null,则重定向到该返回值。 如果为null,则您可以执行其他操作(例如显示错误)
function getReturnFromURL($url) {
$matches = null;
preg_match("/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n]+)/im", $url, $matches);
if (empty($matches)) return null;
switch ($matches[1]) {
case "ebay.de":
return "ebay-network.de/XXX?encoded_url=the_encoded_?-{$matches[1]}";
break;
case "amazon.de":
return "amazon.de/XXX?encoded_url=the_encoded_?-{$matches[1]}?tag=XYZ";
break;
default:
return null;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.