基于 URL 处的域重定向 - 变量
Redirect based on Domain at URL-Variable
我目前正在为我的附属网站开发一个全新的 link 系统。然而,我在 PHP 领域仍然相对缺乏经验,尽管我一直都能做到。会员 link 具有不同的结构,我想通过 PHP 创建一个 URL,这些会自动提供结构。我不能很好地描述它,但我仍然用一个例子来尝试:
用户 X 输入 URL "example.net/ref.php?url=NORMAL_URL" 并根据 "NORMAL_URL" 中的域应用结构。例如,在 URL 中添加一个“?aff=XYZ” "example.net/ref.php?url=http://example.de/". If the URL "example.net/ref.php?url=http://example.nl/" 指向“affiliate_network.de/encoded_url=http%3A%2F%2Fexample.nl%2F 我希望你至少有一点点帮助 understood.Thanks!
将 url 发送到此函数中,它使用 preg_match 和来自 here 的正则表达式来提取域部分。
$matches
将是一个域在元素 1 中的数组,因此您可以使用 $matches[1]
找到它
此函数检查数组是否为空(未找到域),在这种情况下将 return null
然后它使用一个开关将匹配的域与您可以指定的域列表进行比较,如果列出的域中的 none 匹配,那么它将再次 return null
在每种情况下,我只是简单地放置了一个 return 值,但您可以发挥创意,在其中做任何您想做的事情,以按照您的应用程序需要的方式构建 URL。
我建议不要将重定向放在这个函数中,这会在您稍后维护您的应用程序时在语义上造成混淆。您应该检查函数的 return 值,如果它不是 null,则重定向到 return 值。如果它为空,那么你可以做其他事情(例如显示错误)
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;
}
}
我目前正在为我的附属网站开发一个全新的 link 系统。然而,我在 PHP 领域仍然相对缺乏经验,尽管我一直都能做到。会员 link 具有不同的结构,我想通过 PHP 创建一个 URL,这些会自动提供结构。我不能很好地描述它,但我仍然用一个例子来尝试:
用户 X 输入 URL "example.net/ref.php?url=NORMAL_URL" 并根据 "NORMAL_URL" 中的域应用结构。例如,在 URL 中添加一个“?aff=XYZ” "example.net/ref.php?url=http://example.de/". If the URL "example.net/ref.php?url=http://example.nl/" 指向“affiliate_network.de/encoded_url=http%3A%2F%2Fexample.nl%2F 我希望你至少有一点点帮助 understood.Thanks!
将 url 发送到此函数中,它使用 preg_match 和来自 here 的正则表达式来提取域部分。
$matches
将是一个域在元素 1 中的数组,因此您可以使用 $matches[1]
找到它
此函数检查数组是否为空(未找到域),在这种情况下将 return null
然后它使用一个开关将匹配的域与您可以指定的域列表进行比较,如果列出的域中的 none 匹配,那么它将再次 return null
在每种情况下,我只是简单地放置了一个 return 值,但您可以发挥创意,在其中做任何您想做的事情,以按照您的应用程序需要的方式构建 URL。
我建议不要将重定向放在这个函数中,这会在您稍后维护您的应用程序时在语义上造成混淆。您应该检查函数的 return 值,如果它不是 null,则重定向到 return 值。如果它为空,那么你可以做其他事情(例如显示错误)
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;
}
}