首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存外部urls的查询字符串

问保存外部urls的查询字符串
EN

Stack Overflow用户
提问于 2015-11-17 02:18:18
回答 3查看 3.1K关注 0票数 2

用户可以使用查询字符串通过某些推荐id发送到主网站:

代码语言:javascript
复制
www.site.com/?ref=XXX

当他们单击登录区域的链接时,这个查询字符串必须与该外部链接一起使用:

代码语言:javascript
复制
https://internal.site.com?ref=XXX

我正在使用wordpress,所以我不能将?ref=<?php echo $_GET['ref']?>添加到该链接中。

我已经将.htaccess更改为:

代码语言:javascript
复制
<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不保留。

代码语言:javascript
复制
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中应该可以发挥作用,但它不适用于外部链接。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-24 17:35:02

您可以通过在页面末尾添加此脚本来完成此操作。此代码将向客户端的每个链接传递变量。

代码语言:javascript
复制
<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
EN

Stack Overflow用户

发布于 2015-11-26 00:45:41

代码语言:javascript
复制
$queryString = "";
$x = 0;
foreach($_GET as $key=>$value){
    $queryString[$x]= "&$key=$value;
    $x++;
}
$url = $url."?".implode("&",$queryString);
票数 0
EN

Stack Overflow用户

发布于 2022-01-20 18:24:53

这是一个简单可行的js函数,可以实现这一点:

代码语言:javascript
复制
function addQueryParamsToLinks() {
  const links = document.getElementsByTagName("a");
  const queryParams = window.location.search;
  for (const link of links) {
    link.setAttribute("href", `${link.getAttribute("href")}${queryParams}`);
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33748052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档