PageRank Sculpting: You can still use rel=nofollow

Some months ago Google changed the way that treats the nofollowed links. This new policy causes massive problems to all the sites that use the nofollow attribute as it affects the way that PageRank flows in the site and it could lead to PR loss.

WebSEOAnalytics has developed a free script that allows you not only to do PageRank sculpting as easily as you did before but also keep all the rel=”nofollow” links you have in your sites.

Brief description

Our solution uses obfuscated javascript in order to block Google. Additionally we encode the URLs in order to make sure that they can not be detected by search engines. This script has already tested in several sites for the last 3 months and it is currently used in this site.

The main idea is that the developer will still be able use rel=”nofollow” to block the links he wants. Then a script will detect all the nofollowed links and it will replace it with the obfuscated javascript.

You can download the script here:

Below you can find installation instructions and also a detailed analysis of the way it works.


The solution should comply with the following restrictions:

  1. The solution needs to fix the old sites with the minimum effort and be compatible with the old dynamic parts.
  2. It needs to be time efficient.
  3. It must be expandable and easily customized.
  4. It must be supported by all the browsers and exclude the minimum number of users from viewing the page.
  5. It must be easy to update in case that Google makes more changes.

In the next part we will present how to install the script and the PHP code that solves the above issue. If your site is not developed in PHP it is very easy to build your own script by following the steps of the last part of the article. Within the next weeks we will release a .NET version of the script.


Warning: Make sure you have basic knowledge of PHP and that you know what you are doing before you start editing your site.

Download the webSeoAnalyticsLinker zip and extract the files on the root of your site.

Include the file webSeoAnalyticsLinkerheader.php in every page of your site by inserting before the <html> tag the command

<?php include('webSeoAnalyticsLinkerheader.php'); ?>

Include the file webSeoAnalyticsLinkerfooter.php in every page of your site by inserting after the </html> tag the command

<?php include('webSeoAnalyticsLinkerfooter.php'); ?>

Add in all of your pages the javascript files webSeoAnalyticsLinker.js and base64.js by inserting between the tags <head></head> the lines:

<script src="webSeoAnalyticsLinker.js"></script>
<script src="base64.js"></script>

By default the above script uses the Recursive Function mode (see below). If you wish to use the HTTP POST mode you need to edit the files variables.php and webSeoAnalyticsLinker.js. Open them and change the variables $webSeoAnalyticsLinkerMode and var webSeoAnalyticsLinkerMode from 0 to 1.

When using the HTTP POST mode it is optional to block the nofollowed pages in the case that they do not get called by using the POST method. In order to do this insert before the <html> tag the command

<?php include('nofollowblocker.php'); ?>

This will prevent Google from indexing your blocked page.

We suggest to use the default Recursive Function mode.

The last modification that needs to be done is in your CSS file. Every style that affects the <a> tag must also affect the <span> tag. In order to achieve this modify all the anchor styles of your css file like this:

The following lines

div.someClass a {

Should be converted to

div.someClass a, div.someClass span.webseoanalyticsLinker {

Back to the lab – Hands on keyboard (for Web Developers)

First of all we need to find a way to dynamically replace every link that is marked as nofollow. The way to do this is to process the output of every page just before it is sent to the user (on the side of the server). Then we will use Regular Expressions to replace all the nofollowed links with spans that execute Javascript.

Secondly as we know Google can execute basic javascript code. In order to prevent Google from parsing our code we can use 2 methods:

  1. Recursive Function Calls
  2. HTTP POST Method

In the first method when the user clicks on the link (which is replaced by a <span>) a javascript function gets called recursively. Finally an obfuscated code is executed that redirects the user to the target page.

In the second method after the click, a form is created dynamically. This form is used in order to create an HTTP POST request to the target URL. Optionally we can check on the target URL (the nofollowed page) if the POST method has been used. If not we will redirect the user to the main page. This will prevent Google from even indexing the page.

The last think we do is to encode all the blocked URLs with Base64 encoding. This is mainly because Google checks not only for anchor links but also for strings that look like URLs. So if you have in your HTML source, within your javascript a URL string, it is certain that Google will follow it and that it will consider it a link. In order to be able to use the Base64 decoding with Javascript we use a library called Base64 encode / decode.

This solution can be applied not only to new but also to old sites with minimum effort. It is extremely time efficient as it allows you to continue using the nofollow attribute in your code. When the code gets executed it will replace all the nofollowed anchors by spans. Also it can be easily customized and updated. Finally it is a cross browser solution and it limits only the users that have javascript turned off.

You can download the PHP/Javascript version of the script from here:


Leave a Reply