用户可以使用查询字符串通过某些推荐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>每个返回主网站的链接都保留查询字符串,但外部urls不保留。
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中应该可以发挥作用,但它不适用于外部链接。
发布于 2015-11-24 17:35:02
您可以通过在页面末尾添加此脚本来完成此操作。此代码将向客户端的每个链接传递变量。
<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>发布于 2015-11-26 00:45:41
$queryString = "";
$x = 0;
foreach($_GET as $key=>$value){
$queryString[$x]= "&$key=$value;
$x++;
}
$url = $url."?".implode("&",$queryString);发布于 2022-01-20 18:24:53
这是一个简单可行的js函数,可以实现这一点:
function addQueryParamsToLinks() {
const links = document.getElementsByTagName("a");
const queryParams = window.location.search;
for (const link of links) {
link.setAttribute("href", `${link.getAttribute("href")}${queryParams}`);
}
}https://stackoverflow.com/questions/33748052
复制相似问题