This SEO question appears on most SEO forums from time to time and is another generally misunderstood SEO topic and one all SEO consultants should understand.
What’s a static HTML page?
The classic static web page is generated from an actual page ‘physically’ located on the server: so if you had a page named static-page.html somewhere on your server you could find and download this page (it exists, you could grab it via FTP).
The very first websites all used static HTML pages and so the first search engines cut their teeth on static web pages.
What’s a dynamically generated web page?
As the web developed a new way to generate websites arrived, dynamically generated web pages. They differ from static pages in that there is no ‘physical’ equivalent to the page you may be viewing on the server (so you can’t directly download it via FTP).
Dynamically generated pages in it’s simplest form is a single template page that’s used to generate an entire website (could be 1,000,000 page site). Since dynamic pages use scripting languages like PHP and ASP the template will be named after that language for example dynamic-page.php.
This one template page can then be used to create a theoretical unlimited number of unique (unique content) pages each with a unique dynamically generated URL. A simple example would be a 100 page site with each page generated with the format below-
None of the pages above exist ‘physical’, they are all generated from the single dynamic-page.php page using server-side scripting (PHP in this example). The content from each page could come from a MySQL database, updating the database also updates the website content. Editing the dynamic-page.php changes the entire site.
Many new to web sites looking to go dynamic become confused when they can’t find a page like dynamic-page.php?page=4 on their server (FTP) to edit and post to forums asking how to find them :-)
Why use dynamically generated content?
There are many benefits to dynamically generated websites, this site for example uses the WordPress CMS (Content Management System) which creates dynamically generated pages with a very easy to use back-end for adding and editing content on the fly (any fool can create a site using WordPress and many do!).
A user of WordPress types/pastes content into a text editor like web page (similar to Word), gives it a relevant title etc… clicks a publish button and within seconds the page is available on the website with links from any relevant sections automatically created. Add a new section to the site and the CMS automatically creates a link from the menu, so visitors to the site have immediate access to the new section.
This is just the tip of the ice berg of what’s possible with dynamically generated content, this site uses the Stallion Responsive WordPress SEO Package which is packed with with features that take advantage of it’s dynamic nature.
To do this with static HTML pages could involve hours of manual editing, though there are ways to simplify the process for example using server-side includes so the menu code (the menu links) are held in a separate file (edit one file, whole site updated). But even with includes and similar techniques static HTML sites (especially large sites) are far more time consuming to maintain than a well thought out dynamically generated site, especially if you use a CMS like WordPress.
Now you know why smart webmasters use dynamically generated sites now we’ll deal with how the search engines, especially Google handle dynamic sites.
Search Engines and Dynamic Sites
In the early days Google etc… could only handle simple URLs like static-page.html and choked on URLs like dynamic-page.php?page=1.
As more and more websites went dynamic the major search engines played catch up, first being able to deal with simple constructs like dynamic-page.php?page=1 and later the more complex dynamic URLs like-
In the example above we now have 2 variables, a section and a page.
Search engines like Google at first could only handle a small number of variables, wasn’t that long ago when Google could choke on 4 or more variables in a dynamic URL-
And so it was advisable to limit the number of variables passed.
Right now Google and the other major search engines can handle multiple variable URLs, not unusual to find 4+ variables in an indexed page and so there is no SEO reason NOT to use dynamic URLs since they can and will be fully spidered and indexed just like any static HTML page.
That said there’s two reasons for avoiding dynamic URLs, the first isn’t a big deal, so I’ll deal with it first.
Dynamic Sites are Spidered Slower than Static Sites
Google in particular has made it clear dynamic sites are spidered slower than static sites. The reason for Google to do this are webmaster friendly (as I’ve recently discovered), dynamically generated sites can potentially have unlimited pages and so Google assumes a dynamic looking site (a site with URLs like dynamic-page.php?page=1) is big and slows the crawl speed. It does this to limit server load because if a dynamic site (any site) has millions of pages, Googlebot and the other spiders could cause the server to crash if they spidered too many pages at one time.
The above has happened to my server, I use many dynamically generated sites, one script in particular uses Amazon’s XML feed to generate an Amazon affiliate store with millions of Amazon products. I have (had: update 2014 no longer use the script) quite a lot of these stores, so potentially tens of millions of pages spidered by Google etc…
I use something called mod_rewrite to convert dynamic URLs to appear static (an SEO technique) in a web browser or search engine spider, so to Google on my server it finds tens of millions of static looking pages which it spiders at full speed!
A CMS like WordPress also has the option to use mod_rewrite, webmasters have called this option SEO friendly permalinks. All it means is the Apache mod_rewrite module is changing dynamic URLs to appear like static URLs, I use the feature on all my WordPress sites: takes a few clicks of the mouse (“Settings” >> “Permalinks”).
Using mod_rewrite on a dynamic site(s) with millions of pages indexed has brought my server to it’s knees at times and I’ve had to take measures to slow Googlebot and other spiders!
For an average user though the slower spidering won’t impact SERPs to a great degree, your new pages may take a day or two longer to be indexed, but they’ll get there eventually and when indexed will gain whatever SERPs they deserve.
For this reason if you have a dynamically generated site that’s regularly indexed by Google etc… it’s wise to keep things as they are.
SEO Pros and Cons of Dynamic vs Static HTML
If you are starting a new site and want the most traffic out of Google etc… then filenames are important and static HTML pages are very easy to name for maximum SEO effect.
You create a new page and give it a filename like-
An equivalent dynamic URL might look like-
To Google all are spiderable/indexed, but the first one is the best because Google takes all words it recognises from a URL and uses that in the rankings algorithm.
Google treats hyphens (-), plus (+), equal (=) and dot (.) as a word separator so it reads the URLs above as-
1. best seo filename in the world html
2. index php? page best seo filename in the world
3. index php? page 1
The first has 7 recognisable words and one (html) is wasted (and you don’t have to use html).
The second has 9 recognisable words and three (index php? page) are wasted.
The third has 4 recognisable words and all four (index php? page 1) are wasted.
Wasted meaning not part of the keyphrase this page is targeting.
As you can see the HTML version is the best because it is so easy to manipulate and the dynamic URLs can range from terrible to not too bad.
As an SEO consultant I want the most out of each and every page, so when I create a site I try to make all filenames SEO friendly, but I also like to use dynamic sites because they save so much time in managing content and this is where mod_rewrite rears it’s ugly little head!
Mod_rewrite an SEO Consultants Nightmare
The hours I’ve spent converting dynamic URLs into static looking URLs through mod_rewrite is my own little hell, one tiny mistake and nothing works! But get it right and you can convert ugly SEO unfriendly dynamic URLs into SEO friendly static like filenames that Google etc… loves.
Not going to try to explain in this article how to use mod_rewrite, so open up Google type in mod_rewrite and have fun :-)
If you find mod_rewrite is beyond your skill set, take a look at WordPress CMS, designed as a blogging platform, but very easy to convert to a general CMS. Out the box WordPress creates dynamic looking URLs, but with a few clicks of a mouse they can be converted (easily) to the URLs you see with this site and if you use the Stallion Responsive SEO package your site will have almost perfect SEO.
Note: mod_rewrite is for Apache servers only.