-
-
Save jdevalk/5622742 to your computer and use it in GitHub Desktop.
<IfModule mod_rewrite.c> | |
RewriteEngine On | |
RewriteRule ^index\.php$ - [L] | |
RewriteRule (.*) ./index.php?id=$1 [L] | |
</IfModule> |
<?php | |
$id = isset( $_GET['id'] ) ? rtrim( trim( $_GET['id'] ), '/' ) : 'default'; | |
$f = fopen( 'redirects.txt', 'r' ); | |
$urls = array(); | |
// The file didn't open correctly. | |
if ( !$f ) { | |
echo 'Make sure you create your redirects.txt file and that it\'s readable by the redirect script.'; | |
die; | |
} | |
// Read the input file and parse it into an array | |
while( $data = fgetcsv( $f ) ) { | |
if ( !isset( $data[0] ) || !isset( $data[1] ) ) | |
continue; | |
$key = trim( $data[0] ); | |
$val = trim( $data[1] ); | |
$urls[ $key ] = $val; | |
} | |
// Check if the given ID is set, if it is, set the URL to that, if not, default | |
$url = ( isset( $urls[ $id ] ) ) ? $urls[ $id ] : ( isset( $urls[ 'default' ] ) ? $urls[ 'default' ] : false ); | |
if ( $url ) { | |
header( "X-Robots-Tag: noindex, nofollow", true ); | |
header( "Location: " . $url, 302 ); | |
die; | |
} else { | |
echo '<p>Make sure yor redirects.txt file contains a default value, syntax:</p> | |
<pre>default,http://example.com</pre> | |
<p>Where you should replace example.com with your domain.</p>'; | |
} |
default,http://example.com | |
yoast,http://yoast.com | |
test,http://yoast.com/?p=2 |
Hi @kenroar
- It will not open in a new window, but yes, if you use target="_blank" in your link tag (a href=...), it will open in a new link.
- No, you don't need a separate script (if you mean PHP script), the single index.php script works for all links, but as you pointed out, you need a unique entry in redirects.txt for each affiliate link.
- Not sure what you mean but the redirect file in /out/ is not in any way related to CSS. It simply accepts a target id through the href link in your HTML's a tag and redirects accordingly. Any CSS should be added to the HTML tag. So, an example link would be something like this assuming you use the folder /out/ as Yoast does:
<a href="/out/?id=amazon" target="_blank" class="{whatever css class you want here, nothing to do with the redirect}">Get this product on Amazon</a>
I’m no PHP expert, but I wanted to change the 302 status code to 307. When I did it, I may have found redundant code here: header( "Location: " . $url, 302 );
First, I attempted to change the current 302 copy to 307. This did nothing. I did a bit of research and then changed the X-Robots-Tag instead:
header( "X-Robots-Tag: noindex, nofollow", true );
Became
header( "X-Robots-Tag: noindex, nofollow", true, 307 );
I also deleted the 302 in the Location tag since it doesn’t seem to have a purpose (The default response is 302 for redirects, so a 302 status is return whether the 302 is in that tag or not):
header( "Location: " . $url, 302 );
Became
header( "Location: " . $url );
All put together I’m now using:
if ( $url ) {
header( "X-Robots-Tag: noindex, nofollow", true, 307 );
header( "Location: " . $url );
die;
Please correct me if there's a purpose for the 302 in the Location tag. As far as I can tell it doesn't create the status code.
Cheers! And thanks for the script.
I just ran across https://yoast.com/cloak-affiliate-links/ the other day, and since I am somewhat of an expert on link-cloaking, I decided to try out this method myself. It works, but there are two disadvantages compared to the method I recommend, http://scriptsforyourwebsite.professorsopportunities.com/scriptsforwebsites/scripts/hide-your-affiliate-links/ .
(1) There is quite a bit of work involved in setting it up, and the instructions are not very clear in some places,
(2) My method has been around for years, and it is superior to yours in two very important respects: (i) The affiliate ID is not shown in the address bar of the destination URL, and (ii) The destination page may be ANYWHERE - it's not necessary for the user to be redirected to the same URL that appears in the affiliate link.
Please take a look at http://scriptsforyourwebsite.professorsopportunities.com/linkcloakertutorial.html for a 5-step procedure of how to use CloakerBuzz, and an explanation of how it works. And download a free copy to try on your own - it's easy, and it works!
Okay, so I have godaddy website builder, and I also have absolutely no clue how to code. I downloaded the files, but where would I even put it? When I add the code to the html code thing it just makes text. I'm so confused
Hi Everyone,
Find this page very interesting!!
I'm new in this cloaking stuff finally reach here.........
Can Someone tell me how to cloak it, I have watch lots of YouTube tutorial but nothing help me..
- index.php
- .htaccess
- redirects.
In INDEX
Make sure yor redirects.txt file contains a default value, syntax:
default,http://example.com
Where you should replace example.com with your domain.
'; } If my landing page is "youtube.com" where should I change it and the safe page is "google.com" where should I put it Thirdly? which code shoud I use in my index.php for Youtube.com?? Highly appreciate!!What I did is just upload 3 files into my domain main directory and overwrite .htaccess
and replace my domain in redirects.txt
and I am getting following error ERR_TOO_MANY_REDIRECTS
in chrome browser I didn't create any robots.txt
. when redirects.txt
was default my domain redirects to example.com
.
Will someone please help me to sort this issue?
Thanks.
It does what it says on the tin! I had already created a subdomain for my website, which I won't list here, but I simply created a subdomain and named it "go" and then issued a Let's Encrypt SSL certificate for it (because... why not). I created a robots.txt file and yes I did exclude that whole subdomain. Then I uploaded the three files (index.php, .htaccess, and redirects.txt). In the redirects.txt file, I started with my default entry, which is my homepage, and then listed out all my affiliate links. I keep a separate spreadsheet with the raw and cloaked links for all affiliate programs. When I tested the links, they simply worked! I'll now be setting up this same list on all my sites so that they can individually link to the affiliate links smoothly. This rocks! Thank you, Yoast and Github!
Someone advised me to cloak all my outbound links for consistency and because if those links start up an affiliate program later, it's simple to change the entry for that link in the redirects.txt file and then it's done! I also have a couple of affiliate programs that I'm waiting on an approval for. I'll go ahead and write my articles and link to the regular site with the cloaked link, then once the programs are set up, I'll insert my new affiliate link into the redirects.txt file.
One last note: the question marks in my links did not require special handling as someone noted above. I left them in place and the links worked as desired. Color me one happy camper!
This is so fcking incredibly useful! Thanks a lot.
Hi, great work on this solution!
I am wondering if it is possible to have Google Analytics for the links which will be then redirected?!
Does anyone have a solution for this or can point me in the right direction?
Hi, great work on this solution!
I am wondering if it is possible to have Google Analytics for the links which will be then redirected?!
Does anyone have a solution for this or can point me in the right direction?
My solution is to use Google tag manager to set a "goal" to capture click url that contains "go" (just treat it as an external link), otherwise Google analytic alone could not capture it because you have no Google Analytic code in the /go url. Correct me if I am wrong.
Great work. Any idea how I block direct browser access to the redirects.txt file via htaccess?
Currently all my aff urls are accessible via https://my-site/link/redirects.txt
@jdevalk
I hope you don't think my questions are stupid. I am not well versed at this. I need to cloak my Amazon affiliate links.
If I need a different redirect for every link would it look something like this?
default,http://example.com
amazon,http://www.amazon.com/gp/product/affiliate-code-to-specific-product
test,http://amazon.com/?p=2