0

カスタムアフィリエイトプログラムを作成しています。リンクをできるだけSEOに適したものにしたいので、URLに追加されたJavascriptハッシュを使用して、アフィリエイトIDを送信し、アフィリエイトIDを読み取り、クリックを保存してから、リンクされたページに301リダイレクトします。それも。そうすれば、標準的な問題はまったく発生せず、すべてのアフィリエイトリンクがリンクジュースを通過します!

では、次のURLをどのように読み取るのでしょうか。

www.mydomain.com/seo-friendly-url#ref=john

refのハッシュ値を取得してクリックを追加した後、どのようにしてユーザーをにリダイレクトしますか?

www.mydomain.com/seo-friendly-url

どんな助けでも大歓迎です!

4

2 に答える 2

3

フラグメント識別子(#の後の部分)はサーバーに送信されないため、HTTP応答(301リダイレクトに必要)を発行する可能性のあるものから読み取ることはできません。

于 2011-09-23T21:39:00.853 に答える
0

URLの「ハッシュ」部分はサーバーに渡されないため、このデータをサーバー側のリダイレクトや直接処理に利用することはできません。ただし、ページの読み込み時にハッシュを取得して、AJAXまたはリダイレクトを介してサーバーに渡すことは可能です。

www.mydomain.com/seo-friendly-url#ref=johnユーザーをからにすぐにリダイレクトするにはwww.mydomain.com/seo-friendly-url/ref/john

if (window.location.hash.match(/#ref=/))
    window.location = window.location.href.replace('#ref=', '/ref/')

...しかし、それでは、www.mydomain.com/seo-friendly-url/ref/john最初に余分な足の作業を節約するために使用してみませんか?もう1つのルートは、AJAXを介して、ページがロードされた後にハッシュの値を読み取り、それをサーバーに送信して記録することです。

(注:このコードは、汎用クロスブラウザーXMLHTTPRequestを使用してAJAX GETリクエストを送信します。ライブラリの実装に置き換えます[ライブラリを使用している場合])

window.onload = function () {
    // grab the hash (if any)
    var affiliate_id = window.location.hash;
    // make sure there is a hash, and that it starts with "#ref="
    if (affiliate_id.length > 0 && affiliate_id.match(/#ref=/)) {
        // clear the hash (it is not relevant to the user)
        window.location.hash = '';
        // initialize an XMLRequest, send the data to affiliate.php
        var oXMLHttpRequest = new XMLHttpRequest; 
        oXMLHttpRequest.open("GET", "record_affiliate.php?affiliate="+affiliate_id, true);
        oXMLHttpRequest.onreadystatechange = function() { 
            if (this.readyState == XMLHttpRequest.DONE) { 
                // do anything else that needs to be done after recording affiliate
            } 
        }
        oXMLHttpRequest.send(null);
    }
}
于 2011-09-23T22:07:56.060 に答える