2010-10-21 46 views
3

我将如何将我的网站的每个链接的末尾按照编辑每个链接?如何添加&ref = 123每个链接

e.g www.WebsiteName.com/?ref=123

所以,如果我去www.WebsiteName.com/aboutus.php我希望它添加到?ref=123 URL的结束。

+0

请记住,当然最终用户需要对任何启动Javascript这些解决方案的工作。您可以使用输出缓冲来更改链接服务器端,以及phpquery或regex。 – mellowsoon 2010-10-21 22:23:38

回答

8
var has_querystring = /\?/; 

$("a[href]"). 
    each(function(el) { 
     if (el.href && has_querystring.test(el.href)) { 
      el.href += "&ref=123"; 
     } else { 
      el.href += "?ref=123"; 
     } 
    }); 
+0

+1这就是我要回答的 – Mouhannad 2010-10-21 15:46:12

+1

确切地说,你需要检查链接是否已经有查询字符串,尽管我可能会重构一些代码,并使用indexOf()来代替。 +1 – KennethJ 2010-10-21 15:46:24

+0

@Kenneth - 您只需*检查您是否知道这可能存在。如果你知道他们永远不会从源头提供,那将是很浪费的。 – user113716 2010-10-21 15:54:09

3

取决于你的意思是没有编辑每个链接

如果你的意思,你只是不想在你的源手动添加它,你可以这样做:

$('a[href]').attr('href', function(i, hrf) { return hrf + '?ref=123';}); 

或者,如果你的意思是,你不希望有这样做,您可以附加一个.click()处理程序,该程序将在链接被点击时添加该值。

$('a[href]').click(function(e) { 
    e.preventDefault(); 
    window.location = this.href + '?ref=123'; 
}); 
+2

如果链接已经是这样:www.websitename.com/?xpto = 123? :-) – acm 2010-10-21 15:42:22

+0

多数民众赞成那goto等待7分钟才接受你的答案 – Rickstar 2010-10-21 15:45:06

+1

嗯,我坚持实际要求的问题。我们可以改变这个问题,然后整天提出不同的答案。 – user113716 2010-10-21 16:03:38

0
$('a[href]').attr("href", function(){ 
    this.href + '?ref=123'; 
}); 

将是一个非常简单的方法。你可能不得不添加一些错误检查,以确保你没有破坏任何其他参数等。

1

我会用RewriteRule。在我看来,这是最简单和最可靠的方法。也就是说不能用PHP解析或战斗DOM加载问题页面的JavaScript

下面是一个例子:

# For blank query only 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^(.*)\.php$ /$1.php?ref=123 [L] 

# Append to existing query 
RewriteCond %{REQUEST_URI} \.php$ 
RewriteRule ^(.*)$ /$1&ref=123 [QSA,L] 
相关问题