Back in the mists of history, web links were supposed to be 2-way. The site being linked to would also know who was linking to it. This might have been a good idea, I don’t know. I do know that it didn’t actually happen. In the interests of worse is better links ended up being simple one-way connections from the linking page to the linked page.

Then people started bookmarking things. And actually using links and expecting them to work. Which is reasonable. But the buggers also expected them to still work 6 months later, which meant that suddenly pages weren’t able to move any more! Oh the humanity.

It’s ok, though. If you really needed to move a page, you could. Just use a 301 Moved Permanently response to the client, and everything would keep working. The really smart clients could even update their bookmarks if the server claimed that the bookmark was somewhere else.

This is no longer good enough. Pages really have to stay where they’re put. And they also really really have to have a single canonical url. None of that ‘optional trailing slash’ stuff. And really none of this ‘more than one valid hostname’ awfulness.

This is primarily the fault of delicious, which associates comments with pages based on the MD5 hash of their url. Add a trailing slash and the hash changes. Change the hostname, and the hash changes. (Of course, delicious just changed their hostname and thus broke all meta-commentary. Sigh.)

Recently we also have Disqus which, by default, uses the address of the page it’s embedded on to associate that page with its comments. I change the address of the page, I lose all the comments. Same principle. This one is fixable, up to a point – you can tell Disqus what they should consider the page permalink, so that if you move a page, all you have to do is remember where it used to be and tell Disqus that. And put a redirect in, so that when people come from Disqus to the old page url, they still get to where the comments live.

We seem to have bi-directional permalinks back again. With none of the advantages – delicious doesn’t tell me when someone bookmarks one of my pages, for instance, I’d have to ask them about every single url on my site – and all the disadvantages, in that I can’t ever change urls now, even if I use redirects.

But we knew that already.