The Definitive Guide To Higher Rankings For WordPress Sites
WordPress is one of the best, if not
the
best content management systems when it comes to SEO. That being said,
spending time on your WordPress SEO might seem like a waste of time, it
most definitely is not. Optimizing your site to the best practices
outlined in this article will help you improve your rankings, gain more
subscribers and have a better website in general.
As I take quite a
holistic view on (WordPress) SEO, meaning that I think good SEO should
be engrained in all aspects of your online marketing and PR, this guide
covers quite a lot of ground and is therefor a long read. Check out the
table of contents below for some quick jumping around.
Updates to this WordPress SEO article
This
article has been kept up to date with the best practices for
WordPress
SEO since early 2008 and the release of WordPress 2.5, the most recent
update was on March 28th, 2012, with WordPress version 3.3.1 being the
most current release. The goal of this article is to let all the info of
all the different articles I wrote about the topic, here and on other
sites, fall into one big piece: the final
WordPress SEO tutorial.
The
first versions of this article were heavily based on using a plugin
called HeadSpace and a series of other plugins. I've since released my
own
WordPress SEO plugin which replaces quite a few of those. That plugin has proven so powerful that sites like
SearchEngineLand,
The Next Web and
Mashable now all use it. This WordPress SEO plugin is very stable and ready to use and this article now assumes you're using it.
If
you're using another SEO plugin, like All in One SEO pack or
Ultimate
SEO, but would like to switch and make use of my free and extremely
powerful SEO plugin, I've written a
migration guide for you. It's a really easy process. If you're not using an SEO plugin yet, grab my
WordPress SEO plugin and get going.
As
search, SEO, and the WordPress platform evolve I will continue to keep
this article up to date with best practices. Be sure to subscribe to my
WordPress & SEO newsletter to receive notification when I update this article.
Need your website reviewed?
If you need an outside look at your WordPress install, you might consider our Website Review.
The results of this review contain a full report of improvements for
your site, encompassing my findings for improvements in different key
areas such as SEO to Usability to Site Speed & more. For the cost of
€595 (which is less than $800!), you'll receive a report that
represents a much larger value in turn-over and profit. Get it now!
Table of Contents
1. Basic WordPress SEO
Out
of the box, WordPress is a pretty well optimized system, and does a far
better job at allowing every single page to be indexed than every other
CMS I have used. But there are a few things you should do to make it a
lot easier still to work with.
1.1. URLs
1.1.1. Permalink Structure
The
first thing to change is your permalink structure. You'll find the
permalink settings under Settings → Permalinks. The default permalink
is
?p=<postid>
, but I prefer to use either
/post-name/
or
/category/post-name/
. For the first option, you change the setting to
/%postname%/
:
To include the category, you select "Custom Structure" and change the value to
/%category%/%postname%/
. If you previously had
?p=<postid>
as your permalink WordPress will take care of all the redirects for you. This is also true if you change from
/%postname%/
to
/%category%/%postname%/
. If you change from any other permalink structure, you might want to consult my article on changing your WordPress permalink structure and the tool that you'll find within it.
1.1.2. WWW vs non-WWW
You
need to think about what you want your site to show up as,
www.example.com or simply example.com. Make sure that in your general
settings, under Settings → General, the version you want to show up is
properly reflected:
You will also want to set this correctly in
Google Webmaster Tools.
Make sure to set up your site with Google Webmaster Tools and set the
preferred domain, you can find this setting under Settings → Preferred
domain:
1.1.3. Stop Words
The
last thing you'll want to do about your permalinks to increase your
WordPress SEO, is remove so called stopwords. Words like "a", "and",
"the" etc. As of version 1.1.6, my WordPress SEO plugin will
automatically remove stop words from your slugs once you save a post, so
you won't get those ugly long URL's when you do a sentence style post
title.
This is generally not something you want to change after
posts have gone live. If people have already linked to it, try to not
change the permalink anymore and if you do, make sure the post is
properly redirected. In most cases WordPress should redirect the old URL
to the new one but if it doesn't you need to make the redirect
manually.
1.2. Optimize your Titles for SEO
The
title, the contents of your page's <title> tag, is one of the
single most important factors for ranking in the search results. Not
only is it the literal title of the tab or browser window, it's also the
first line people see in the search results, followed by the URL and
the snippet, usually the meta description combined with a date:
On
many blogs, the title for blog posts is still "Blog title » Blog
Archive » Keyword rich post title" or "Blog title » Keyword rich post
title". For your WordPress blog to get the traffic it deserves, this
should be the other way around, for two reasons:
- Search
engines put more weight on the early words, so if your keywords are near
the start of the page title you are more likely to rank well.
- People
scanning result pages see the early words first. If your keywords are
at the start of your listing your page is more likely to get clicked on.
This
means the ideal title for that plugin page on WordPress.org would
actually be "WordPress SEO by Yoast > WordPress Plugins >
WordPress" instead of what it is now. For more info on how to craft good
titles for your posts, see this excellent article and video by Aaron
Wall:
Google & SEO Friendly Page Titles.
1.2.1. Controlling titles with the WordPress SEO plugin
You
can control your SEO titles with my WordPress SEO plugin. There are two
parts of the plugin that control these. First of all, as soon as you
install & activate the plugin, you get an SEO section in your admin.
Navigate to SEO → Titles and you'll see so called Title Templates (as
well as meta description templates but we'll get to those later). For my
site they look like this:
There's
a bunch of variables you can use in the titles and meta description,
they're all listed and explained on the bottom of the settings page. Be
sure to check whether the template actually works and you're not getting
a duplicate site title for instance. If this is the case, you might
need to check the "Force rewrite" checkbox on the same page or follow
the instruction on that page to modify your template.
For the other pages, I have the following settings:
- Categories, Tags and other taxonomies:
%%term_title%% Archives %%page%% • %%sitename%%
- Search pages:
You searched for %%searchphrase%% • %%sitename%%
- 404 pages:
Page not found - Error 404 • %%sitename%%
- Author archives:
%%name%% • %%cf_role%% at %%sitename%%
The
last one shows you a very cool feature: you can use %%cf_<custom
field name>%% to use a custom field, this can be either a post custom
field, sometimes known as post meta value, or a user meta value. In
this particular case it's the custom field "role" I use to store the
role of a user within my company.
1.2.2. Optimizing individual posts
So
now that we've set decent templates, we can start to optimize
individual posts and pages. For that we use the snippet preview added by
the WordPress SEO plugin:
This
preview will automatically take the values you've already filled in in
your blog post and apply them to your template, but you can also
override the title completely using the title field just below it:
If
you hit the Generate SEO title button on the right it will pre-fill
that field with a title based on your template which you can then
adjust, or you can write one completely by yourself. The counter will
show you how many characters you've got left.
For titles the following things are important:
- They should always contain your brand, preferably at the end, so people may recognize you in consecutive searches.
- They
should always contain the keyword you think is most important for the
current post or page, which we'll call the focus keyword from now on.
The focus keyword should preferably be at the beginning of the title.
- The rest of the title should entice people to click.
1.3. Optimize your Descriptions
Now
that we've got proper titles, we should start to focus on meta
descriptions. The meta description can be used by search engines to show
in the snippet, it's the black piece of text shown beneath the URL. The
meta description is usually
only used when it contains the keyword the searcher was searching for.
Some
plugins, most specifically the All in One SEO plugin, use so called
"automated descriptions". They use the first sentence of a post to fill
the meta description by default. That's not very smart. That first
sentence might be an introductory sentence which has hardly anything to
do with the subject.
Thus, the only well written description is a
hand written one, and if you're thinking of auto generating the meta
description, you might as well not do anything and let the search engine
control the snippet... If you don't use the meta description, the
search engine will find the keyword searched for in your document, and
automatically pick a string around that, which gives you a bolded word
or two in the results page.
Auto generating a snippet is a "shortcut", and there are no real shortcuts in (WordPress) SEO (none that work anyway).
So,
use the meta description field you find in the WordPress SEO plugin to
write a meta description. Make sure it entices the reader to click
through and make sure that it contains the focus keyword of your post or
page at least once.
You'll notice I do not mention meta keywords. I don't use them and neither should you, for an explanation, read this:
meta keywords and why I don't use them.
1.4. Image Optimization
An
often overlooked part of WordPress SEO is how you handle your images.
By doing stuff like writing good alt tags for images and thinking of how
you name the files, you can get yourself a bit of extra traffic from
the different image search engines. Next to that, you're helping out
your lesser able readers who check out your site in a screen reader, to
make sense of what's otherwise hidden to them.
You should of
course be writing good titles and alt tags for each and every image,
however, if you don't have the time for that, there is a plugin that can
help you. The plugin is called
SEO Friendly Images, and it can automatically add the title of the post and or the image name to the image's alt and title tag:
Using the proper alt attributes for images is also something that is checked in the
Page Analysis functionality of my WordPress SEO plugin.
1.5. XML Sitemaps
To
tell Google and the other search engines that your site has been
updated, you can use XML Sitemaps. My WordPress SEO plugin contains an
XML Sitemap module by default that you just have to enable. Go to
Settings → XML Sitemaps and click the checkbox:
As
soon as you've checked the checkbox and hit Save, it'll give you some
options but in most cases you won't need those. It generates an XML
sitemap for all your posts, pages, custom post types and all your
taxonomies like categories and tags and (if applicable) other custom
taxonomies.
When you publish a new post or page, the XML sitemap
is automatically submitted to Google & Bing allowing them to easily
(and quickly) find your new content.
2. Template Optimization
2.1. Breadcrumbs
You'll
want to add breadcrumbs to your single posts and pages. Breadcrumbs are
the links, usually above the title post, that look like "Home >
Articles > WordPress SEO". They are good for two things:
- They allow your users to easily navigate your site.
- They allow search engines to determine the structure of your site more easily.
These
breadcrumbs should link back to the homepage, and the category the post
is in. If the post is in multiple categories it should pick one. For
that to work, adapt
single.php
and
page.php
in your theme, and use the
breadcrumbs from my WordPress SEO plugin. You find the settings for the breadcrumbs in the SEO → Internal Links settings page.
2.2. Headings
Although
most themes for WordPress get this right, make sure your post title is
an <h1>, and nothing else. Your blog's name should only be an
<h1> on your frontpage, and on single, post, and category pages,
it should be no more than an <h3>. Your sidebar shouldn't be
crammed with <h2> and <h3>'s either etc.
These are easy to edit in the
post.php
and
page.php
templates. To learn more about why proper headings are important read this article on
Semantic HTML and SEO and my article about the
Heading Structure for your Blog (from which a lot applies to non-blog WordPress sites too).
2.3. Clean up your code
All
that javascript and CSS you might have in your template files, move
that to external javascripts and css files, and keep your templates
clean, as they're not doing your WordPress SEO any good. This makes sure
your users can cache those files on first load, and search engines
don't have to download them most of the time.
2.4. Aim for speed
A
very important factor in how many pages a search engine will spider on
your blog each day, is how speedy your blog loads. You can do three
things to increase the speed of your WordPress.
- Optimize the template to do as small an amount of database calls as necessary. I've highlighted how to do this in my post about speeding up WordPress.
- Install a caching plugin. I highly recommend W3 Total Cache, which is a bit of work to set up, but that should make your blog an awful lot faster.
- W3 Total Cache works even more magic when combined with a CDN like MaxCDN. Read more about WordPress CDN stuff here.
Also,
be aware that underpaying for hosting, is not wise. If you actually
want to succeed with your link-bait actions, and want your blog to
sustain high loads, go for a good hosting package. I use
VPS.net myself, and they've proven to be better than most everything I've seen in hosting, but I've got great experience with
Page.ly too. If you want to know more be sure to read my article about
WordPress hosting.
Do
you really need to link out to all your buddies in your blogroll site
wide? Or is it perhaps wiser to just do that on your front page? Google
and other search engines these days heavily discount site wide links, so
you're not really doing your friends any more favor by giving them that
site wide link, nor are you helping yourself: you're allowing your
visitors to get out of your site everywhere, when you actually want them
to browse around a bit.
The same goes for the search engines: on
single post pages, these links aren't necessarily related to the topic
at hand, and thus aren't helping you at all. Thus: get rid of them.
There are probably more widgets like these that only make sense on the
homepage, and others that you'd only want on sub pages.
Some day
you will probably be able to change this from inside WordPress, right
now it forces you to either use two sidebars, one on the homepage and
one on sub pages, or write specific plugins.
2.6. HTML Sitemaps
For
some sites an HTML sitemap might be nonsense, especially when your site
is really a blog, for more corporate type sites with several levels of
pages an HTML Sitemap might actually be very beneficial for both users
and search engines. I've written an article on how to create an
HTML Sitemap Page Template which would be a good start to get one going for your WordPress site.
2.7. Author highlighting
If you've found my site through a search you might have seen that results from my site get an author image in front of them:
This
is called an "author highlight". Most of the work needed for that has
to be done in your theme, I wrote an extensive post on what is needed
and how you can do that:
rel=”author” and rel=”me” in WordPress.
3. Advanced WordPress SEO and Duplicate Content
Once
you've done all the basic stuff, you'll find that the rest of the
problems amount to one simple thing: duplicate content. Loads of it in
fact. Out of the box, WordPress comes with a few different types of
taxonomy:
- date based
- category based
- tag based
Next
to that, it seems to think you actually need to be able to click on
from page to page starting at the frontpage, way back to the first post
you ever did. Last but not least, each author has his own archive too,
under
/author/<author-name>/
, resulting in completely duplicate content on single author blogs.
In essence that means that, worst case scenario, a post is available on 5 pages
outside of the single page where it
should
be available. We're going to get rid of all those duplicate content
pools, by still allowing them to be spidered, but not indexed, and
fixing the pagination issues that come with these things.
3.1. Noindex, follow archive pages and disable some archives
Using
the WordPress SEO plugin, make sure to prevent indexing of archive
pages that do not apply for your site. You do this under SEO →
Indexation, where you'll find the following options:
The
settings above are the settings for my site. As you can see, I've
completely disabled the date based archives, as I don't use those. Any
date based link will redirect to my homepage because of this setting.
I've left all other archives untouched, but I have checked the top
checkbox, which makes the subpages of those archives be noindex, follow
by default. So you'll never land on page 2 of an archive on my site from
the search engines.
On smaller sites it might make sense to
noindex either the category or the tag structure, but in my experience
noindexing those on yoast.com does little to no change at all.
There
is one type of archive that is noindex,follow by default as well in the
WordPress SEO plugin: the search result pages. This is a best practice
from Google for which a setting is left out as you should just have that
anyway.
A lot has changed in how Google handles paginated
archives recently when they introduced their support for rel="next" and
rel="prev" links. I've written an article about that:
rel="next" and rel="prev" for paginated archives, which is a bit too technical to fully list here, but suffice to say my WordPress SEO plugin takes care of
all the needed changes automatically.
3.2. Disable unnecessary archives
If
your blog is a one author blog, or you don't think you need author
archives, use WordPress SEO to disable the author archives. Also, if you
don't think you need a date based archive: disable it as I have. Even
if you're not using these archives in your template, someone might link
to them and thus break your WordPress SEO...
Thirdly,
you'll want to make sure that if a bot goes to a category page, it can
reach all underlying pages without any trouble. Otherwise, if you have a
lot of posts in a category, a bot might have to go back 10 pages before
being able to find the link to one of your awesome earlier posts...
There's an easy fix, in fact, there are several plugins that deal with this. My favorite one by far is
WP-PageNavi, maintained by Scribu, one of the best WordPress developer around. If you have the
Genesis Theme, you can just enable numeric navigation under Theme Settings → Content Archives.
Another
easy step to increase your WordPress SEO is to stop linking to your
login and registration pages from each and every page on your blog. The
same goes for your RSS feeds, your subscribe by e-mail link, etc.
WordPress SEO automatically nofollows all your login and registration
links, but you really shouldn't have a login link in your template in
most cases.
3.5. Canonical
In february 2009, the major search engines
introduced the rel="canonical" element.
This is another utility to help fight duplicate content. WordPress has
built-in support for canonical link elements on single posts and pages,
but it has some slight bugs in that. It doesn't output canonical links
on any other page. With my WordPress SEO plugin activated, you
automatically get canonical link elements for
every page type in WordPress.
4. A site structure for high rankings
Blogs
are spidered so easily due to their structure of categories, tags etc.:
all articles are well linked, and usually the markup is nice and clean.
However, all this comes at a price: your ranking strength is diluted.
They're diluted by one simple thing: comments.
4.1. Pages instead of posts
You've
probably noticed by now, or you're seeing now, that this WordPress SEO
post is actually... not a post. It's a page. Why? Well for several
reasons. First of all, this article needed to be a "daughter"-page of my
WordPress page, to be in the correct place on this blog. Secondly, to
rank for the term [WordPress SEO], this article has to have the right
keyword density. And that's where things go wrong. Comments destroy your
carefully constructed keyword density.
That's why I decided to
make my most important articles into pages. That way, you can easily
update them and do a new post about what you've changed.
4.2. New wine in an old bottle
If
a post on your blog becomes incredibly popular and starts to rank for a
nice keyword, like mine did for WordPress SEO, you could do the
following:
- create a new page with updated and improved content
- change the slug of the old post to
post-name-original
- publish the new page under the old post's URL, or redirect the old post's URL to the new URL
- send an e-mail to everyone who linked to your old post that you've updated and improved on your old post
- wait for the links to come in, again;
- rank even higher for your desired term as you've now got:
- more control over the keyword density
- even more links pointing at the article
- the ability to keep updating the article as you see fit to improve on it's content and ranking
Some
among you will say: I could have 301 redirected the old post to the new
one with the same effect. True. Except: you'd lose the comments on the
old post, which is in my opinion a sign of disrespect to people who took
the time to comment, and 301 redirects take quite a bit of time
sometimes. Of course you should treat this technique with care, and not
abuse it to rank other products, but I think it can be done in
everyone's benefit. For instance this article: if you came here through a
social media site like Sphinn, expecting an article about WordPress
SEO, that's exactly what you got!
4.3. Linking to related posts
One
way of getting search engines to get to your older content a bit
easier, thus increasing your WordPress SEO capabilites a LOT, is by
using a related posts plugin. These plugins search through your posts
database to find posts with the same subject, and add links to these
posts.
There are quite a few related posts plugins but I tend to stick with the
Yet Another Related Posts Plugin or custom code in my own theme. A very good alternative is
Microkid's related post plugin,
which lets you manually pick related posts. This might cost a bit more
time before you hit publish but might very well be worth your while.
There are also a lot of plugins that will automatically link certain keywords to certain posts. I do not like this
at all as I find it to look very spammy.
5. Conversion optimization
Get those readers to subscribe!
A lot of bloggers still think that because their blog
is
a blog, they don't have to optimize anything. Wrong. To get people to
link to you, they have to read your blog. And what do you think is
easier: getting someone who is already visiting your blog to visit
regularly and
then link to your blog, or getting someone who visits your blog for the first time to link to your blog immediately? Right.
That's
why conversion optimization is so vitally important to bloggers as
well: they need to learn how to test their call to actions on their blog
so that more people will subscribe, either by e-mail or by RSS. (Ow
btw, if you haven't subscribed to this blog yet,
do it now!)
One
of the things I've found to be very important, and more bloggers seem
to have found this, is that a BIG RSS subscribe button is very
important, as is offering a way to subscribe by e-mail. I even offer
daily and weekly e-mail subscribe options, using
MailChimp, and have found that people tend to really like those options too.
Another
thing to be very aware of is when people might want to subscribe to
your blog. If they've just finished reading an article of yours, and
really liked it, that would be the ideal time to reach them, right?
That's why more and more people are adding lines like this to the end of
their posts: "Liked this post? Subscribe to my RSS feed and get loads
more!"
Another great time to get people to subscribe is when
people have just commented on your blog for the first time, for which
purpose I use my own
comment redirect plugin. Which leads me to the next major aspect of WordPress SEO:
Get those readers involved
Comments are one of the most important aspects of blogs. As Wikipedia
states:
The ability for readers to leave comments in an interactive format is an important part of many blogs.
Comments
are not only nice because people tell you how special you are, or that
you made a mistake, or whatever else they have to tell you. Most of all
they're nice, because they show engagement. And engagement is one of the
most important factors of getting people to link to you: they show you
they care, and they open the conversation, now all you have to do is
respond, and you're building a relationship!
6.1. How you get people to comment
The
easiest way of getting people to do anything is: ask them to do it.
Write in an engaging style, and then ask your blog's readers for an
opinion, their take on the story etc.
Another important things is
your comment links. Is your comment link "No comments »"? Or is it "No
Comments yet, your thoughts are welcome »"? Feel the difference? You can
change this by opening your
index.php
template, search for
comments_popup_link()
and changing the texts within that function.
6.2. Bond with your commenters
Another
thing to do is thank people when they've commented on your weblog. Not
every time, because that get's annoying, but doing it the first time is a
very good idea.
Justin Shattuck thought the same, and created the
Comment Relish
plugin which sends an email after someone has made his first comment.
This email is a message you can enter yourself, with for instance your
feed URL, and in my case, a newsletter subscribe URL, etc. Note that
some people think this is spam, and that laws in several countries might
prohibit the use of this. I can't tell you, because I'm not a lawyer.
Another option, which is a bit less obtrusive / spammy, is to install my
comment redirect plugin. This plugin allows you to redirect people who have made their first comment to a specific "thank you" page.
Now that people have joined the conversation on your blog, you should make sure they
stay in the conversation. That's why you should install the
subscribe to comments
plugin, that allows people to subscribe to a comment thread just like
they would in a forum, and sends them an e-mail on each new comment.
This way, you can keep the conversation going, and maybe your readers
will be giving you new angles for new posts.
7. Off site blog SEO
If you've followed all of the above WordPress SEO advice, you've got a big chance of becoming successfull, both as a blogger
and in the search engines. Now the last step sounds easy, but isn't. Go out there, and
talk to people online.
There's been a movement on the web for a while now that's called the "
You comment - I follow".
They want you to remove the nofollow tag off of your comments to
"reward" your visitors. Now I do agree, but... That get's you a whole
lot of spam once your WordPress blog turns into a well ranked blog...
What I do advocate though, is that you
actually follow your
visitors! Go to their websites, and leave a comment on one of their
articles, a good, insightful comment, so they respect you even more.
If
you think that's a lot of work, do realize that, on average, about 1%
of your visitors will actually leave a comment. That's a group of people
you
have to take care of!
Twitter
is a cool form of micro-blogging / chatting / whatever you want to call
it. Almost all the "cool" people are on there, and they read their
tweets more often than they read their e-mail, if you even knew how to
reach them through e-mail.
To boot, if you use
WordTwit or
Twitter Tools,
all of your posts can be announced on Twitter, which will usually get
you quite a few early readers! People will feel even more happy to
comment on Twitter, which might get you into an extra conversation or
two.
7.3. Find related blogs, and work them
If you want to rank for certain keywords, go into
Google Blogsearch,
and see which blogs rank in the top 10 for those keywords. Read those
blogs, start posting insightful comments, follow up on their posts by
doing a post on your own blog and link back to them:
communicate! The only way to get the links you'll need to rank is to be a part of the community.
8. Measuring Results
A
good SEO campaign relies on not only implementing changes but also
measuring the impact of those changes, seeing what works and doing more
of that. Two great Analytics packages to measure results are
Google Analytics and
getClicky. For both of these Analytics packages I've written plugins, my
Google Analytics for WordPress plugin and my
getClicky plugin.
You
can also measure results by tracking rankings, the problem with rank
tracking though is that it's hard to determine "real" rankings because
of personalized and localized search results. Really the best outcome of
being great at WordPress SEO is to get more traffic.
Another great source of data is
Google Webmaster Tools. One of the relatively simple tricks I always give people is the following:
- go into Webmaster Tools;
- go to "Your site on the web", then "Search queries".
- Click on "Download this table".
- Open the CSV file you get in Excel.
- Replace all the instances of "<10" in the Clicks column with 9.
- Select the entire first row and click the filter button, usually the icon is a funnel:
- For the average position column, choose "greater than 5", sort Ascending.
- Then for the "Clicks" column, sort Descending.
You
now have the keywords people are finding you for in the results pages
where you rank below #6. The fact that they clicked on your result
proves that they found your result interesting: see if you can optimize
any of those terms so you'll rank higher than a #6 average rank: use the
Page Analysis in my SEO plugin to improve the page, improve the copy,
ask others to link to you, etc. Be sure to read my article about
cornerstone content as well.
9. Conclusions on WordPress SEO
This guide gives you a
lot
of stuff you can do on your WordPress site. It goes from technical
tips, to conversion tips, to content tips, to conversation tips, and a
whole lot in between. There's a catch though: if you want to rank for
highly competitive terms, you'll have to actually
do most of it
and create great and compelling content in the process.
If you want to keep updated on the latest news about WordPress, and hear more tips as I come up with them, then subscribe to my WordPress newsletter right
now. If you need help implementing all the tips in this article, or
want me to review whether you've done a good job implementing it all,
order a website review!
Original Article by Joost de Valk