Skip to content

Instantly share code, notes, and snippets.

@jdevalk
Last active January 7, 2025 07:26
Show Gist options
  • Save jdevalk/5622742 to your computer and use it in GitHub Desktop.
Save jdevalk/5622742 to your computer and use it in GitHub Desktop.
These three files together form an affiliate link redirect script.
<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
@ssoulless
Copy link

This is so fcking incredibly useful! Thanks a lot.

@zakul
Copy link

zakul commented Apr 21, 2020

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?

@upsangel
Copy link

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.

@Johndale99
Copy link

Johndale99 commented May 18, 2021

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

@Ruriko
Copy link

Ruriko commented Jan 7, 2025

can you convert htaccess to nginx?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment