How to submit to directories

An easy way to increase your ranking is and stay, since a long time, directory submissions. But… be aware to do it right!

To submit a website in multiple directories is a very boring activity (not to say pain in the ass) and repetitive. That’s the reason why you have to optimise your work so it’s most efficient as possible, and suffer a little bit for having some results.

do not submit massively in directories

Especially for a young website, Google will it find rather suspect if many hundreds backlinks appear in one shot. Don’t take useless risks, submit your website in maximum 10 directories per week. First, your website won’t be published on every of them, because some directories are abandonned, what may be hard to know prior to submit your website to it. Then, your submission’ll published randomly in time, and Googlebot’ll also crawl randomly on these directories, so it gets backlinks in a diluted way, which is good for your "natural evolution".

(almost) all unique titles and descriptions

Another mistake would be to use the same description for your 200 directory submissions; it exposes the page where your site is published to duplicated content (simplier: your website won’t show up in SERPs). It may avoid the directory to rank on some queries; it’s often interesting to have directories ranked under you on Google, this way you occupy indirectly the battlefield. Another reason not to duplicate descriptions is that lots of webmaster will delete submissions that has already-indexed content (I do the same on Annuaire Design and Annuaire blogs design).

To make directory submissions, you need to be good at writing, and to own a good synonym dictionnary. usally, I do write a bunch of 255 characters long descriptions, all different. Then I use each of them for about 5 directories if I don’t know if they’re "alive". For good directories, write a real unique description.

Then, why different titles? Not for duplicated content. It’s rather because most of time, the link from the directory to your website is anchored on the title you wrote… it becomes then anchor text. Write a big list of anchor titles (avoid keyword list, must look natural), and vary them regularly.

track what’s happening with your submissions after

In my opinion, this is a very important step. If you subscribe weekly multiple websites each to a dozen of directories, you’ll be lost very soon, and you’ll try often to subscribe to directories you already did. It’s why it would be a good idea to create a Excel list, one line per directory, check if you submitted to this directory, and check if the directory published your website or not (when you get confirmation afterwards).

It will also allow you to target which directories are quick, and especially those who doesn’t publish anything anymore. It’s pretty useful if you launch another site afterwards, you take this list back and it avoids you wasting your precious time.

how to subscribe to more directories, faster?

Avoid all solutions where you may read the word "automatic"… the only efficient way to subscribe in directories is to do it yourself, one by one; or with a good semi-automatic tool.

A semi-automatic tool will fill up all directory’s form fields for you, all you have to do next is to fill up the captcha (human verification code) and send the form. This kind of tool saves a lot of time for forms, which is quite cool, but you still have to write tons of descriptions.

To do this, there are many US softwares (I can’t suggest one, I never used a US one).

If you’re looking for a mid-way free solution, there’s the great Firefox plugin InFormEnter. This plugin adds a button next to each fields of a form, which gives you access to a menu with all you presetted titles, descriptions, emails, etc. It’s slower than softwares but it’s quite nice to use.

Well choose directories

Many directories are

Beaucoup d’annuaires sont bluntly ugly link dumps, more or less abandonned and without quality criterions. This kind of place is not worth the loss of time. Not all directories are great, there are so much directories that you must choose. For example, you should not pay to subscribe to a directory…

There are some directories where it’s hard to be published, but you have to try because a link there is better than a bunch of links in poor directories. You’ll find easily a list of these directories on Google.

General directories, it’s great, there are plenty of them, but if you find a specialised directory corresponding to your site Web’s field, you must subscribe there. A link to your website, when it’s placed in a corresponding context, is more worth than a normal non-context link.

Last advice : avoid RSS directories if your website is young. These directories are more "important" to Google than you are, and as they publish your own content, they can easily rank over you, even maybe penalize you for duplicated content. Truncate your RSS feeds to let only a little introduction to the articles. If you don’t have RSS feed on your website, and you would like how to do it, I invite you to read my tutorial that teaches how to create a dynamic (PHP) RSS feed.

I have also written an article that provides a list of directories that validates good submissions within 72 hours (but french directories, sorry! Maybe english ones soon, do you have any suggestion?).

Have fun!

SEO for WordPress

There’s many plugins to help you out with search engine optimisation for WordPress… but which ones should you use?

After a couple of tests, I think the best WordPress plugin for SEO optimisation is All in one SEO. It allows you to customize <title> tags, description et keywords metas for each of your articles, very easily. These customisations are essential for a good ranking.

You may also configure the plugin so that it avoids indexing tag pages and category pages, to avoid duplicated content.

I would advice to use SEO Smart Links, which automaticaly creates links to tag and category pages, when those words are found in your text content. If you index tag and category pages, it’s a good way to create lots a inbound links, without any effort. It doesn’t always work, depending to the text format, but who cares…

Another useful that is good for both SEO ranking and for your human visitors : put a list of articles that have a common subject, on each article page. Yet Another Related Posts Plugin allows you to do it automaticaly. It’s not bad for SEO; your links are more « important » because they link to a page with a common subject (I think so). Else, your visitors may be interested to read another article about a common subject.

Do you know any other (better?) WordPress plugins to increase SEO ranking?

WordPress : Complete backup

Most of WordPress plugins allow you to backup your database automatically, but what about files? There’s one or more plugins for it!

Here are 2 plugins you need to be safe :


The plugin that allows you to backup your files is called WordPress Backup.

WordPress Backup, once installed, creates 3 zipped files of folders of the same name :


You can configure the plugin to plan automic backups, etc. It’s simple and it works well.


There are many plugins for it, but one of best is, according to me, DBC Backup. It allows you to plan automic backups of your database, easily and fast.

I do follow!

Comment links of this blog are now DOFOLLOW!

But what is dofollow?!

When you make a link to another website, it’s possible to specify the nofollow attribute. It tells Google to do not follow the link; it follows it but it won’t give popularity to it. It’s a bad thing, because the major advantage to have a backlink to your website, is that it makes you more popular (at Google’s eyes); which avoids nofollow links.

More external links (dofollow links) there are in a page, more the importance given to them is divided. It’s why most of bloggers don’t give any importance to links of people that comment; to do not reduct importance given to their own links to internal pages.

BUT if a visitor makes a relevant and long comment, it should be right to give him a free backlink, not nofollow link. Lots of people write comment all the time only for that, but it may be a good motivation for people to post comments they wouldn’t have posted else. You must not forget that it’s free content for the website, it’s only an exchange of services.

You must not exagerate, for instance to use an anchor text nickname to increase directly your ranking (e.g. poker texas hold’em), but it may be tolerated, even if many blog editors take it like a lack of respect.

In my case, if someone posts a comment and it’s a relevant comment, I’ll approve it without problem!

If you own a WordPress blog, here is the way to make your comment links dofollow. For Joomla!, if you use !JoomlaComments, it is possible to do a little hack to have dofollow comment links.

!JoomlaComments dofollow links

!JoomlaComments is a well known Joomla! component that allows you to have comments on your Joomla! site articles. The links are by default set to nofollow and it’s not possible to set this in component’s configuration.

If you wish to make comments links in your blog dofollow, you’ll have to do a little hack within the component core itself :

Open this file : /components/com_comments/joscomment/comment.class.php and look for « nofollow », which should bring you to line 2293 :

$website = “ “;

Remove « nofollow » attribute :

$website = “ “;

That’s all!

Joomla! Plugin for insecable spaces in content

Here is a little plugin for Jooma 1.5.x which allows to replace automatically secable spaces by insecable spaces in an article.

This plugin is especially for those that are obsessed by typography rules. According to these rules, many characters must not be broke by a line.

Here are the replaces characters :

  1. word :
  2. « word »
  3. word ?
  4. word !
  5. cash $
  6. pourcentage %
  7. slash / word

The plugin inserts the HTML entity &nbsp; instead of secable spaces, for all characters above. When you write your article, you must write a normal space, else the plugin wouldn’t recognize that you wish to insert insecable spaces.

This plugin was wrote for french rules; I have no idea for english ones… Note that in Quebec, you must not insert any space before question and exclamation marks; I included them because because people from France would need it.

You may see this plugin in action in this blog. It’s not a big thing, but it’s quite useful to me.

Joomla, custom redirection after sign in

When a user signs in in Joomla, he is automatically redirected at homepage.

This article explains you how to add a hack in Joomla 1.5, to redirect the user to the page of your choice after he signed in. It may be useful, especially if you want the user to do a specific action (e.g. : to post an article, a picture, subscribe to your services, etc.). From back-end, you may specify a Joomla! page for redirection, but no custom URL.

I used Joomla 1.5.8 for this example, but it should be the same pattern for every other J1.5.x version.

Open this file :

[votre site]/components/com_user/controller.php

Look for this code line, that should be located at line 163, inside the login() function :

login() :

$mainframe->redirect( $return );

All you have to do is to replace $return by the URL where you want users to be redirected. For instance :

$mainframe->redirect( “” );

Dynamic RSS feeds

RSS feeds became essential for blogs and any other website that publishes content on a regulary basis. It’s a good way to broadcast your content and allow your visitors to follow your blog by suscribing to your feeds.

It allows also to submit your RSS feeds in RSS directory, which will give you deep links (other links than your homepage), in addition to bring new visitors from the directory because you show them interesting content before they have access to your website.

Most of CMS (as Joomla, WordPress, Dotclear, etc.) already have an embeded script that’ll generate RSS feeds for you. But if you own a dynamic website, scripted « by hand », you’ll have to do it by yourself…

Let’s say that you own a dynamic PHP website that provides articles from time to time. We’ll create a PHP function to extract articles from the database, then to write them in a XML file, which will be your RSS feed. This way, your RSS reed will update itself automatically.


To do it, we’ll use URL Rewriting, because it allows to do all that in a much cleaner way, by simulate the RSS file on demand, instead of constantly editing it in a real RSS file.

Create a .htaccess that you will place to root of your website, or edit the .htaccess file you may already own :

Options +FollowSymlinks
RewriteEngine on
# Link for RSS feed
RewriteRule ^rss\.xml$ /rss.php [L,NC]

With that rewriting, rss.php file will generate automatically the XML content of the RSS feed; it’ll simulate the file.

Create a file named rss.php. We extract, in the following example, last articles from an imaginary blog.

Structure of the table used in the example :

`id` mediumint(9) NOT NULL COMMENT ‘ID of the article’,
`texte` text NOT NULL COMMENT ‘Text of the article’,
`date` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=’Articles of the blog’;

To insert into rss.php :

// MySQL connexion
$host = “localhost”; // normally, localhost
$user = “USERNAME”;
$pass = “PASSWORD”;
$bdd = “DB_NAME”;

@mysql_connect($host,$user,$pass) or die(“Connexion error: “.mysql_error());
@mysql_select_db(“$bdd”) or die(“Database selection error: “.mysql_error());

// Specify content type : XML
header(“Content-Type: text/xml”);

// MySQL query that extracts content from DB
$requete = “SELECT id, date FROM blog ORDER BY date DESC LIMIT 10″; // last 10 articles
$resultat = mysql_query($requete);

// XML writing
// header :
$sm = ”;
$sm .= ‘xmlns:xsi=””

// Articles of the blog
while ($blog=mysql_fetch_array($resultat,MYSQL_ASSOC)) {
$xml = ‘‘;
$xml .= ‘‘;
$xml .= ‘RSS FEED TITLE‘; // Title of your RSS feed. For instance : Last articles of blog xyz
$xml .= ‘HTTP://WWW.YOURSITE.COM/‘; // Your website’s URL
$xml .= ‘‘.$title.’‘; // Your website’s description

$xml .= ‘‘;
$xml .= ‘YOUR_SITE/IMAGE.GIF‘; // An image, logo
$xml .= ‘IMAGE TITLE‘; // Normally the same thing as the title before
$xml .= ‘HTTP://WWW.YOURSITE.COM/‘; // your website’s URL
$xml .= ‘DESCRIPTION‘; // Description of you website (for image)
$xml .= ‘‘;

$i = 0;

foreach($news as $a) {

if($i < 12) { $id = $a['date']; $datexml = explode('-', $a['date']); $date2=date("D, d M Y H:i:s", mktime(0,0,0, $datexml[1],$datexml[2],$datexml[0])); $lien = "" . $id; // Link to your article (modify as your wish) $xml .= '‘;
$xml .= ‘‘.$a[‘titre’].’‘; // Article title
$xml .= ‘‘.$lien.’‘; // Link to article
$xml .= ‘‘.$lien.’‘; // Permalink
$xml .= ‘‘.$date2.’ GMT‘;
$xml .= ‘‘.strip_tags($a[‘txt’]).’‘; // Text of the article, removing HTML tags that it may contain
$xml .= ‘


// end of XML
$xml .= ‘‘;
$xml .= ‘‘;
echo $xml;

Then, when you will try to reach, rss.php will be called an a XML file will be generated and shown, with 10 last articles of your blog.

If you wish, it’s also possible to make a function with this code, and instead of simulating the RSS file with URL Rewriting, you can directly write into a rss.xml file. All you have to do is write something like this, to write in a real file :

// write file
$fp = fopen(“flux.xml”, ‘w+’);
fputs($fp, $xml);

URL Rewriting with EasyPHP and Apache2

URL Rewriting allows a dynamic website to have clean and relevant URL addresses.

In the next article, we’ll see what is URL rewriting for, and how to put it in function on your local apache server.

Why to rewrite URLs?

Normally, a URL address of a dynamic website would look like this :

But if we give the server a rewriting rule, it may look like this instead :

That’s much cleaner, and easier to understand for the user and for Google. are a good way to improve SEO; moreover, Google doesn’t like that much URLs that have more than two parameters into its query string (like in the first example).

How to set up URL Rewriting on my local apache server?

If you wish to use URL rewriting « at home », you will probably need to activate the rewriting module (called mod_rewrite) of Apache. It is not very complex to do, but if you don’t know how, it may be frustrating.

Then, here are solutions to set up URL Rewriting on your local server, using EasyPHP or Apache 2. Note that if you use MAMP or MAMP PRO, mod_rewrite is already enabled.

The only difference between the activation of mod_rewrite for EasyPHP 1.8 and for EasyPHP 2, is that in the version 2, there’s only a line to uncomment.

Activation of mod_rewrite on EasyPHP 2

Uncomment this line (remove #) in EasyPHP’s configuration, httpd.conf (Menu e/Configuration/Apache in EasyPHP) :

LoadModule rewrite_module modules/

Then, in the same configuration file, look for the <Directory> tag, relevant to your website. It should look like this :

# Possible values for the Options directive are “None”, “All”,
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
# The Options directive is both complicated and important. Please see
# for more information.
Options Indexes FollowSymLinks

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
AllowOverride None

# Controls who can get stuff from this server.
Order allow,deny
Allow from all

You see « AllowOverride None »? Change it for « AllowOverride All ». This little trick will say to the server to pay attention to the .htaccess file. Without this modification, the .htaccess will be ignored by the server.

Activation of mod_rewrite on EasyPHP 1.8

Uncomment the two following lines (remove #) in EasyPHP’s configuration, httpd.conf (Menu e/Configuration/Apache in EasyPHP) :

LoadModule rewrite_module modules/
AddModule mod_rewrite.c

In the same file, look for :

# This may also be “None”, “All”, or any combination of “Indexes”,
# “Includes”, “FollowSymLinks”, “ExecCGI”, or “MultiViews”.
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
Options Indexes FollowSymLinks Includes

# This controls which options the .htaccess files in directories can
# override. Can also be “All”, or any combination of “Options”, “FileInfo”,
# “AuthConfig”, and “Limit”
AllowOverride All

# Controls who can get stuff from this server.
Order allow,deny
Allow from all

Take care that AllowOverride All is set to ALL and not set to NONE.

In EasyPHP 1.8, it’s already set to ALL, but in EasyPHP 2.0, you must do it by hand. Be aware that if it’s not set to ALL, the .htaccess file won’t be considered by the apache server, it’s very important (and very simple)!

Activation of mod_rewrite on Apache 2 (dedicated server)

It’s very easy to do. Run the console (for Macs, it’s called Terminal, and it’s located in System applications) and type this :

a2enmod rewrite

Then, you must edit Apache’s configuration, for that it doesn’t ignore the .htaccess file. Open configuration file :

sudo nano /etc/apache2/apache2.conf

Find the tag <Directory> that is for your website, then search for AllowOverride None, and set it to AllowOverride All.


A default file may be there, in that case, its name would be 000-default.

Once you saved your changes, restart the server :

/etc/init.d/apache2 reload

How can I verify if URL Rewriting is really activated

Check if mod_rewrite is there and activated

Very simple. Type :


in a PHP file, then check that « mod_write » is there. If it’s not there, there’s something wrong. Of course, it means that rewriting doesn’t work. Take a look to  previous steps again, you may have missed something.

Create your .htaccess file (the name of the file starts with a dot), and place it at the root of your site.

How to name a .htaccess file correctly, with its dot

With Windows, it may cause a problem because this syntax is for hidden files (normally). It is possible to create the .htaccess file by using Notepad. Save your file this way : ".htaccess" (yes, with quotes).

You can also rename it in DOS, if you saved it in text format :

ren htaccess.txt .htacces

Rewriting rules in .htaccess file

Insert these lines in the .htaccess file :

Options +FollowSymlinks
RewriteEngine on

# ————————————————————————-
# ————————————————————————-

RewriteRule ^try.html$ page_test.html [NC,L]

Create a file named page_test.html, also at the root of the website, with .htaccess.

Now that the rewriting rule is there, try to open essai.html in your browser.

  1. If you get page_test.html : URL rewriting is working!
  2. If you get an 404 error because of page_test.html : It works but page_test.html doesn’t exist.
  3. If you get an 404 error bacuse of try.html, and mod_rewrite is there when you try phpinfo() : Your rewriting doesn’t work! Are you sure you did all right?
  4. If you get an 500 error, and you are on local server : Your .htaccess file contains errors in its rewriting rules (but your rewriting is working, you must only have a look on your code and fix what’s wrong).