Over at Gamers With Jobs we wanted to rewrite any outbound Amazon product links so that they include the GWJ affiliate ID (every little bit counts when you're a community site). Deciphering Amazon's generally bloated URLs can be tricky, as can knowing what exactly is required when building a link to a product page. So, I cobbled together a couple different pieces of info into a pretty simple solution that I thought I'd share.
First, we wanted a redirect page that would allow us to get metrics on how many product links are followed on our end. This was super-easy to implement in PHP, thanks to a script from Blogthority.
$asin = htmlspecialchars($_GET['asin']);
if ($asin) {
$link = "http://www.amazon.com/gp/product/" . $asin . "?tag=your-affiliate-id-here";
header("Location:".$link);
exit();
}
The trickier part was getting any pre-existing Amazon links, along with any links that users don't enter in the local redirect format, to be rewritten. A bit of jQuery and a JavaScript regular expression, inspired by a post over on MusicBrainz, made a quick solution.
Note: If you're using the latest jQuery, you'll want to drop the @ symbol from the initial selector.
$
('a[ @href *= "amazon.com" ]').
each(function() {
var href
= $
(this).
attr('href');
var re
= /\/([A-Z0-9]{10})(\/|\?|\b)/i
var asin
= re.
exec(href
);
if (asin
[1
]) {
var shorturl
= '/go/amazon?asin='+asin
[1
];
$
(this).
attr('href', shorturl
);
}
});
The script grabs any links with "amazon.com" in the URL and rewrites them to follow our redirect page using the 10 digit ASIN that it pulls using a regular expression. That's it!