可以使用查询字符串通过某个引荐ID将用户发送到主网站:
www.site.com/?ref=XXX
当他们点击指向登录区域的链接时,此查询字符串必须与该外部链接一起使用:
https://internal.site.com?ref=XXX
我正在使用wordpress,因此我无法将?ref=<?php echo $_GET['ref']?>
附加到该链接。
我已将.htaccess
更改为:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php - [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L,QSA]
</IfModule>
返回主网站的每个链接都会保留查询字符串,但外部网址不会。
www.site.com?ref=XXX [original]
www.site.com/go/reds?ref=XXX [query strings are kept]
https://internal.site.com [query strings are removed]
QSA
中的htaccess
标志应该可以解决问题,但它不适用于外部链接。
答案 0 :(得分:1)
您可以通过在页面末尾添加此脚本来执行此操作。此代码将变量传递给客户端的每个链接。
<p><a href="/about/">Internal</a></p>
<p><a href="https://google.com">External</a></p>
<p><a href="/post/?id=1">Link with query string</a></p>
<script>
var index = window.location.href.indexOf('?')
if(index != -1){
var querystring = window.location.href.slice(index + 1)
var tagA = document.getElementsByTagName('a');
for(var i = 0; i < tagA.length; i++){
var href = tagA[i].getAttribute('href');
href += (href.indexOf('?') != -1)? '&' : '?';
href += querystring;
tagA[i].setAttribute('href', href);
}
}
</script>
答案 1 :(得分:1)
要在每次调用the_permalink()函数时应用自定义查询,您可以使用此过滤器
function append_query_string($url) {
if (isset($_GET['ref'])) {
$url = add_query_arg('ref', $_GET['ref']);
}
return $url;
}
add_filter('the_permalink', 'append_query_string');
但它可能是不方便的选项'因为它仅应用于使用the_permalink函数生成的链接,因此您必须将此功能也应用于菜单,发布类型归档链接,以及通常,您生成链接的位置wp永久链接功能。
另一个解决方案可能是将ref存储在会话cookie或$ _SESSION全局中:在这种情况下,每次用户浏览器被隐藏时,引用都将丢失,因此如果用户手动返回到您的站点,您也可以跟踪引用被推荐之后。
希望有所帮助:)
答案 2 :(得分:0)
$queryString = "";
$x = 0;
foreach($_GET as $key=>$value){
$queryString[$x]= "&$key=$value;
$x++;
}
$url = $url."?".implode("&",$queryString);