如何在每个链接中添加& ref = 123

时间:2010-10-21 15:36:31

标签: php javascript jquery

如何通过编辑每个链接将我的网站的每个链接的结尾放在后面?

例如www.WebsiteName.com/?ref=123

所以,如果我转到www.WebsiteName.com/aboutus.php,我希望它将?ref=123添加到网址的末尾。

4 个答案:

答案 0 :(得分: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";
        }
    });

答案 1 :(得分: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 :(得分:1)

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

以下是一个例子:

# 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]

答案 3 :(得分:0)

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

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