Blogging


The change of software in my last post meant that not only the domain, but all the page names and the entire structure of my recipe site changed — a big no-no for search engine purposes! On the other hand, the traffic this application gets isn’t actually worth anything to me in monetary terms — quite the opposite, it just uses bandwidth ;-) — so I wasn’t hugely bothered if it lost rank in Google for a while. In fact it was a golden opportunity to test the best way of handling this situation.

I started off by buying a brand new domain name, setting up MovableType, importing all the data, fixing up the design, and testing it to see that it all worked OK. At this stage it was a secret from Google. Once I was happy, I wondered just how I was going to keep all that precious traffic to the old site. I didn’t want to devote a huge amount of time to it, so I decided I’d just use 301 redirects (this is a header sent by the web server that tells the page requester that the page has “moved permanently”; there is also a “temporary redirect” status).

Thank goodness for dynamic pages! The old system used a single page called ShowRecipe.asp which took the id of the recipe and displayed it. So I just recoded this page to take the id, look up the recipe title, and convert it into the new URL (MovableType uses “search-friendly” URLs constructed from the recipe title). Then it does a 301 redirect to the URL on the new site. I removed / renamed the few other pages on the old site.

I added the new site to my Google webmaster tools page and monitored the results. Google came and spidered a few pages from the site within a couple of days, and I was soon seeing almost the level of traffic I’d had on the old site. Within a week there were 23 pages in Google’s index, which seemed not bad for a brand-new domain registered less than a fortnight before and with no incoming links yet, apart from our own site. As of now, Google has spidered again and picked up over 140 pages.

The process is evidently not finished yet though, as old redirected pages are still showing high up in Google (#6 for “pitta bread recipe” for example). Of course if anyone clicks on those results, they will automatically end up on the new site anyway, because of the redirect.

I’m probably not going to bother going after links to the old site and asking people to change them, but I would if this was a commercial site. Otherwise old linked-to pages seem to hang around in Google forever.

So at present just doing the 301 redirect looks as if it is going to work pretty well. If you completely change the structure of your site it’s well worth doing a specific 301 redirect for every page I think, for the benefit of human visitors rather than search engines.

OK, so this blog doesn’t get updated very often, but I have three blogs to look after now! Currently it’s all change on the blogging front. When I logged into the Back Burner just now, Google insisted that I upgrade to the new Blogger. The process appeared to be painless, except that the post entry screen now refused to accept any input — I typed happily away only to realise my words were disappearing into the ether. Yet another application that wasn’t tested in Opera . I fiddled in the settings and switched off “Compose” mode, and all is well now. It’s a shame that none of these WYSIWYG editing tools works in Opera; I don’t know whether it’s Opera’s fault, or just developers who don’t care about this small segment of the browser market.

In the meantime, I decided recently that it was time to revamp the recipe database which is currently responsible for much of the traffic to our company site (see Embarrassed by Success). When we created this demonstration CMS back in 1999, database-driven sites were a lot less common than they are now. It seemed inappropriate to keep this demonstration module on our site when it no longer reflects what we are capable of (we are much cleverer than that now!). It also used an Access database, which is hardly state-of-the-art. On the other hand I still find it a very useful system for storing my favourite recipes, and it gets a fair amount of traffic.

But time to completely redevelop the system (in Ruby on Rails for example) was lacking. So rather than reinventing the wheel again, I thought I might as well simply extract the content from the database and pour it into a blog. I experimented briefly with the latest blogging poster child, WordPress, before deciding I felt more comfortable with my old favourite Movable Type. This surprised me slightly, since Wordpress is written in PHP, which I am much more comfortable with than the “old-technology” Perl behind Movable Type. But The Movable Type administration interface feels much more polished and flexible than Wordpress’s and its templating system is easy to understand and manipulate. Not only that, but the Movable Type architecture allows you to generate PHP pages, so you can have the best of both worlds by incorporating PHP into your templates to provide dynamic elements.

Movable Type has moved on since I last installed it back in the days of version 2.66. It now incorporates a whole new plugin architecture, allows you to tag posts as well as assign them to multiple categories, has improved comment handling, and includes a style switcher so you can easily apply a theme without having to dabble in templates. It also easily handles multiple blogs and authors. Its major downsides compared to WordPress are that it doesn’t cater sensibly for static pages outside the blog structure, and its image handling is pretty rudimentary. Oh — and some parts of the admin interface don’t work properly in Opera!

Anyway, having installed Movable Type, grabbed a theme from MT’s style contest, and done a lot of cutting-and-pasting of content, I decided that the shiny new version of my recipe database deserved its very own domain. To my amazement, both larecettedujour.org and recettedujour.org were available, so I snapped them both up, and pointed them temporarily at a subdirectory of our company site. So … drumroll … here is La Recette du Jour in all its glory!