The Perfect Site Structure

As I recently redesigned and coded this site, I realized the importance of a site structure. It’s the very essence of accessibility. The need to generate a working site structure should occur as part of the planning of a site, but is made possible during the coding.

I will present some basics of the idea, then follow with a working example and explanation for each step.

Why bother with a clear site structure?

It helps two groups of people — you and your visitors.

Categorizing every piece of content will make the developer code as efficiently as possible. With a good site structure, you will be able to code more quickly and expand or change any code in a more organized fashion. (By code I mean the client-side as well as the server-side coding).

The visitors see the visual placements of links and images and determine where to click (or when to leave). Having a perfect site structure will help your visitors find the things they need fast, without becoming annoyed at the poor presentation of perhaps excellent content.

So what is there to be done about structure?

Sitemaps, permanent links, and server-side coding.

1. A sitemap

Here’s a perfect example of a sitemap to start off with. This could have been a draft made up during the planning process.

sitemap.gif

Great sitemap. Now you’ve replicated the navigation. A sitemap is way more than just a list of sections for the site. It’s an abstract composition of the structure of the site. Although not every site needs a sitemap (especially if the site has a really clear structure), it needs a clear and exemplified outline. With the sitemap, the designer/developer can easily make the site without thinking about what kind of content site needs at the same time.

The designer will soon realize this, when the question “what should I put here?” comes to mind. This is a sign of insufficient planning. But it’s never too late. Let’s add some details. A lot more.

sitemap_improved.gif

Basically, the goal is to have an item for every physical page that the visitor can view. In other words, the sitemap represents the structure of your site from the visitor’s perspective.

2. Determine the permanent links structure

Nowadays not all pages are handcoded each time. Many websites are powered by publishing engines, such as WordPress, MovableType, Mambo, etc. Many of these dynamic scripts support permanent links — the fake url that your visitor sees. An example would be the url of this page, as it’s dynamically generated and processed.

Choosing the permanent link structure is a crucial step in developing a website:

  • Search Engine Optimization — search engines value keywords in your urls heavily, which in turn determines the importance of your content. Having related words such as the title, date, category helps.
  • Site Management — managing a site with permanent links rather than index.php?section=articles&article=3 is a lot easier and comforting.
  • Permanency — Permanent links are for the sole purpose of this. If you ever want to switch to another dynamic engine that uses a different index.cfm?area=4&item=25, you can still maintain the same structure, and the search engines and visitor’s bookmarks will not break.

This is the exact sitemap structure finished earlier:

permanent_links.gif

So the “Archive by Month” page would be accessed with the url http://band.com/archive/month/. And similarly the actual archive of a certain month could be http://band.com/archive/2006/02/.

Tips when considering the permanent links:

  • For each “virtual folder” (the characters between two /), the name should have as few words as possible the higher it’s in the hierchy. For example, http://band.com/the-archive-of-the-blog/ is ugly and messy.
  • If the page is part of a regularly updated section, include at least the year and month (and day if updates are frequent) of update. Many sites have structures such as http://domain.com/my-special-post/ and cause confusion for visitors and search engines.
  • Use dash (-) instead of underscore (_) when separating words. Dashes usually count for whitespace (for search engines) and look coherent when in a link (underscore in a link with underline looks like a space).

Here is a great resource on a standard for site organization, as pointed out by jinesh.

3. Coding the server-side of the site

Many people still code their own management systems with a server side language, due to its flexibility and originality. When writing code from scratch, try to write “modules” that represent each section of the site.

For data, updated content should be stored in a database in its own table for that section. Static content can be stored in a database, or it can be stored in one or more editable files.

The actual scripts themselves, whether object oriented or not, should be divided into sections according to the sitemap as well. Since each section is independent of the other, the scripts can have different classes or functions for each section. But be sure to make global functions accessible to other functions — try not to rewrite any code that does the same thing. Simply try to add a parameter to the function.

Of course the code can still have different kind of methods for displaying text. Be it the factory method or production method, the structure of the structure of the site should be the same. No that’s not a typo, the structure of the structure is the organization in your code. It should be as clear to you as it is to a visitor.

If, on the other hand, you are using a premade publishing engine, take advantage of its capabilities in organizing the data. Most of these offer permanent links structure — make sure that is done according to your plan.

There are definitely many deficits in a program that prevent you from achieving the ideal structure. Workarounds! I know that in my redesigning of the site, I hit many road blocks. But I solved every one of them with an alternative method (specifically in WordPress, using Pages).

Overall, the golden rule is to have a clear and humanly understandable structure for you and your visitors. Good luck!

post a comment54 Comments

  1. 1February 14th, 2006jack says

    good guide. but how to you build the site it self with css. i love to do stuff by hand. and have yet to see a good css and php guide that will help you make a php/css/html based website menu/guide/CMS without a backend like mysql.

  2. […] Inclui vários Gráficos read more | digg story […]

  3. 3February 14th, 2006Steve says

    Thanks for the guide.
    I use a CMS called supersite for an open source project i manage, zoopframework.com. It accomplishes the above for both pages and blog entries. It also handles this sort of url structure for the forum. It has allowed us to spend more time focused on development and less time spent on maintaining a seo capable website.

  4. 4February 14th, 2006Russ Jones says

    Actually, if SEO is your guide, you should consider keeping all of your files in the root directory. It will increase pagerank dispersion and sub-page optimization.

    Consider a naming scheme such as the following

    home
    about.html
    about-contact-us.html
    about-history.html
    band.html
    band-releases.html
    band-albums.html
    etc.

    This naming structure is as useful to organization as folders, but will improve spidering.

  5. 5February 14th, 2006Brian says

    good article.

  6. 6February 14th, 2006Noodles says

    Does anyone know how to do rewrites for IIS ? most howtos are for Apache.

  7. 7February 14th, 2006Oliver Zheng says

    Russ would that be because pages in the root folder have higher page rank? If that’s the case, you are right, having static pages in the root folder would help with the SEO.

  8. 8February 14th, 2006John Bokma says

    @Russ Jones
    “Actually, if SEO is your guide, you should consider keeping all of your files in the root directory. It will increase pagerank dispersion and sub-page optimization.”

    Nonsense. A lot of so called SEO advice is just myths and this one is a fine example.

    In an URL there is no such thing as a directory. Furthermore, there is no penalty for an extra element in a path, that would be silly. Remember, a search engine wants to give visitors a good result, and to a visitor it doesn’t matter if it’s /band/releases.html or /band-releases.html.

    Why do you think http://johnbokma.com/ works as it does? Try firefox rss in Google, for example.

    I go with the author of this article, and recommend the former.

    @Oliver Zheng: no, page rank has nothing to do with being in a root folder. Russ Jones is wrong. I know some people think that for each / your PageRank drops one digit, which is plain stupid, and IIRC based on people misreading an article that tried to explain PageRank. Sadly myths like this keep going around and around.

  9. 9February 14th, 2006rahim says

    Hey I love your website can you send me the theme for it… I won’t post it on sites im gona use it for my self personal journal thank you and please let me have it I love it

  10. 10February 14th, 2006Ilya Radchenko says

    This inspired me. Im currently rebuilding a random site from scratch, for the sole purpose of practice, and to learn something new. I will have to impliment what I learned from your article. Deffinetly bookmarking your site. :D And I love the design.

  11. 11February 15th, 2006ricky d says

    Really cool resource

  12. 12February 15th, 2006Kl4tZ says

    I agree!

  13. 13February 15th, 2006yanin says

    Nice.

  14. 14February 15th, 2006jinesh says

    i agree with john, you should definitely be using directories to sort your content. infact, directory names are handy to stuff in a few more keywords ;)

    here’s a good article on a standard for site organization-
    http://www.theobvious.com/archive/1998/11/02.html

  15. 15February 15th, 2006Toby says

    Nice article but how do you make the required url without sprinkling files and directories all over the place? I find if you’re running the content from a database it makes sense to use one page as the master template. To have the url path to describe the content means either duplicating your main page or writing apache aliases at the required location! Is this how you do it?

    Thanks

  16. 16February 15th, 2006Oliver Zheng says

    Great to see that you guys enjoyed it.

    Toby, rewriting the apache aliases would be the way to do it.

    jinesh, that’s a great link. I’ll include it in the article.

  17. 17February 15th, 2006John Bokma says

    @Toby
    “Nice article but how do you make the required url without sprinkling files and directories all over the place?”

    You can make your site dynamically and make it appear statically to googlebot and friends. Disadvantage of this is that when something goes wrong, there is no site. A good but more difficult solution is to have a program update pages when they are newer, on the fly.

    Regarding this blog, I see that links are nofollow by default. If you have a blog, I think it’s better to check for spam yourself, and don’t make outgoing links nofollow. If a link is on topic, the anchor text adds to the overall value of your page. Nofollow seems a “cool” way to fight spam, but IMSHO it’s the wrong way, since it might harm your site, and if everybody uses it, it will harm more then do good, since links are still used to measure value by SEs.

    Also, people do click on links, and there is no way nofollow prevents this, and hence the spamming keeps going on and on. It all goes automatically, and the major spammers don’t care if you nofollow or not. They don’t even bother to check, since via SEs one can find blogs by the dozen in a very short time.

  18. 18February 15th, 2006Oliver Zheng says

    I never thought about it that way.

    The original intent of rel='nofollow' was so spam links do not get picked up by the crawlers, so the blog becomes less relevant to spam.

    But I see your point, and it probably works better your way if the comments are kept clean. I got rid of the nofollow.

  19. […] The Perfect Site Structure — mtsix [Oliver Zheng] (tags: organization design) […]

  20. 20February 15th, 2006music and media man says

    Thanks, a good overview, as for the seo discussion, I believe that the url folders are used in keyword relevance, and especially file names, so /music/index.html is good but music/music.html would be better…

  21. 21February 15th, 2006John Bokma says

    @Oliver: Sadly people keep spamming blogs. I get now and then attacks via zombie networks. At the moment I don’t accept messages that are too short if they include a URL, which works quite well for the time being.

    @music and media man: Technically there is no such thing as a URL folder. What you mean are parts of the path, and indeed you can map your filesystem structure onto URL paths. But it’s not needed.

    As for keywords, /music/music.html might be regarded as keyword stuffing. Furthermore, I doubt if there is a real difference between /music-music.html or /music/music.html. It’s not that hard to regard both as similar in software.

    Final note on /music/index.html: don’t use index.html in your links, use /music/ instead (or other relative/absolute constructions). Between your site and the browser caching might occur, and a cache doesn’t know that music/ and music/index.html point to the same file (the webserver does handle this), and hence two copies of the same page might be cached.

  22. 22February 16th, 2006Cheyne says

    Great article. I have blogged it on thewebdesignblog.com

  23. 23February 16th, 2006Lawsy says

    Very interesting read, especially the comments!

  24. […] Make the Perfect Structure for a Site […]

  25. 25February 20th, 2006Ganesh says

    Great article!

  26. 26February 22nd, 2006music and media man says

    @John Bokma: Actually google does use the file name and ranks it extremely highly, so music.html will rank better than just /music/. I’m pretty sure google treats URL and the filename as related but not the same thing. I don’t believe /music/music.html could be considered keyword spamming and is in keeping with the site structure presented, although a more descriptive filename would be better (music-green-cold-potatoes)?

  27. 27March 2nd, 2006adsense guru says

    I agree that the filename is verry important on google ranking but content is twice as important.

  28. 28March 8th, 2006Kevin says

    One question for you site organization gurus: what’s the best way to organize a multilingual site ? I’m talking about a site with mostly static content that has to support English and French, for example.

    Do you use two identical sitemap structures, one for each language ? Do you use one structure with multiple files in each (e.g.)? e.g. /music/music_en.html and /music/music_fr.html ?

    Any tips would be appreciated

  29. 29March 8th, 2006Oliver Zheng says

    Since the content is the same, but in different languages (hence, different presentation), a subdomain or root folder would be good. For example, en.domain.com/content/ (fr.domain.com/content/) and domain.com/en/content/ (domain.com/fr/content/) would seem the most logical.

  30. […] Check It Out […]

  31. 31March 17th, 2006Mark Wilson says

    Good article.

    I have made a page
    http://www.seodata.com/reBlogger%20Website-based%20Aggregator/rp-38-t8_SEO_best_practices.aspx
    containing a combined list of SEO “perfect page” and interlinking and so on.

    If you don’t want to write your own perfect SEO website, then just download and install reBlogger
    http://www.seodata.com
    it gets ranking right out of the box.

    Try it. Enjoy!

  32. […] Here is a great resource on a standard for site organization, as pointed out by jinesh. […]

  33. 33April 17th, 2006Erde says

    Really good and helpful article - thanks!

  34. 34April 29th, 2006Einkaufen says

    Hi all!

    This article is very nice. Good information about site structure. Thanks for that one, helped me a lot for planning a new project.

    Cu

  35. 35May 2nd, 2006hasan says

    sa va a teue hassan

  36. 36May 2nd, 2006hasan says

    sa va ateuete

  37. 37May 10th, 2006Alex Shields says

    I think that the higher up in the directory tree the better…

  38. 39July 7th, 2006ama says

    I use open source CMS, try ff.

  39. 40July 11th, 2006SEO Position says

    Hello,
    It’s funny how easy it is to do much of what you mention in this article with Drupal CMS.
    We have their content management system running on nearly a half dozen sites sites right now and simple modules do most of the categorization and structure for us.

    For instance, we use several contributed Php snippets for heirarchy categorization, one module for the sitemap (or categories for the site(s)), and several more contributed modules for simply presenting users with easy, clean URL pages that are easily spidered and easy for users to understand.

    I would recommend Drupal to almost any client for its categorization capabilities alone.

  40. 41October 24th, 2006Tottigol says

    Very useful, thanks a lot!

  41. 42November 3rd, 2006sajid says

    i need help i need to write about a site and was wondering if u can help me.

    http://www.nmpft.org.uk/baf/2006/home.asp

    need to kno wat i can write about the site

    The Site Structure (organization of content)
    Navigation Methods (labelling, affordances)
    Layout (hierarchy, clarity of design)
    Colour (hierarchy, focus, contrast)
    Content (legibility, formatting, media, typography)

    jst a little on wat to write to get me going

  42. 43December 12th, 2006Grant Donald says

    This clarifies some things that I didn’t previously understand and even dispels conflicting information that I took for granted.

  43. 44January 14th, 2007Ashenafi G says

    what is site structure and what is the importance of site structure.
    Tanx.

  44. 45February 13th, 2007Delikatessen says

    Great and useful article.

  45. […] The Perfect Site Structure — MTsix [Oliver Zheng] […]

  46. 47January 5th, 2008James says

    Hey, just wanted to say great post and that I referenced it in my Internet Marketing Blog post about sitemaps

  47. 48February 10th, 2008André says

    Hi, actually I used this guide to test in my newest website. Thanks for this great guide.

  48. 49February 20th, 2008BigRed says

    Great Stuff. Especially for someone like me who is not as much into technical things. I am looking forward to visiting your site regularly from now on.

  49. 50May 27th, 2008Juergen Abnehmen says

    This article is old but good because most of my sites I construct like that.

  50. 51May 31st, 2008BigRed says

    Interesting - I will give it a test in one of my new web projects. Thanks for the info.

  51. 52July 24th, 2008IMFreakz says

    Thanks, a good overview, as for the seo discussion

  52. 53September 17th, 2008Frank says

    You should also make router shorter which means put all articles in root folder, no use of .html. :) Just my opinion.

  53. 54September 29th, 2008Liens utiles au developpement says

    […] SEO Site Structure […]

Post a Comment

Name and email are required (website is optional). Basic HTML is enabled.

Your email address is not revealed to anyone.