Recovering from a broken heart in HTTP status codes

Sometimes a breakup is a breath of fresh air and sometimes it causes chest pain. The stages below are for the chest pain moments. I’ve totally been there. If you’re there now, maybe HTTP can help you through. HTTP helps everything.


I often think of myself as a website with several facets/folders. It’s a pre-req for this whole post so please bear with me. Imagine you’re a structure like:

(yeah, you’re a real winner.)


Just kidding. If you’re into the subdomain vs. subdirectory debate, that’s fine. I made subdirectories because that’s what came to me, but feel free to knock yourself out with subdomains.


Now imagine that you’ve been dumped (or you dumped the other person, whatever). And your feelings are just not cooperating. In a word, you feel “sadness.” That sucks, but it’s human, and of course things gets better — it’s like working on your website.


Stage I
503s across the entire domain is down. This is the equivalent to being in shock. Life is difficult.


Foo: Bar, I heard the news… how you doing?
Bar: Site-wide 503.
Foo: Sorry, dude.


Stage II (optional)
404s across
503s or 200s nearly everywhere else


This stage is optional and can last weeks/months/until you find someone else attractive. Never been at this stage myself, but sometimes in movies you’ll hear dialogue like:


Friend: I know Jack broke your heart, but how about I set you up with Dave? He’s a nice guy.
Main character: I know you’re trying to help, but no Jack, no Dave. I swear off all men completely .


Stage III
200s everywhere except…
503s for romantic-interest/


Hooray, you’re functioning! This can be a really productive stage. I bet the content on has expanded. And with all your free time, you might even have new folders: and


Stage IV
302 temporary redirect from
200s everywhere else


Also known as the “rebound.” Try not to make the target of your redirect 200 on the domains or The key to Stage IV is that’s it’s a 302, not a 301.


Stage V
200s everywhere, including romantic-interest/


Yay for life! The orb is green. Backend ready to publish unique content. Your frontend always turning heads.

14 Replies to “Recovering from a broken heart in HTTP status codes”

  1. 502 or 503? I’ve never felt like signaling “bad gateway”, but maybe that’s just me 😛


    Maile Ohye Reply:

    Ha! Good catch. Updated. Can I get your LGTM?


  2. I never thought of life through the eyes of http status codes, but I think it’s a fun analogy. This sounds like a great topic for a book, “My life as a Web Site”.


  3. I was going to make some joke about linking to bad neighborhoods and needing a trip to the clinic … but I’ll just stay over here and out of trouble 😉


  4. Ha ha that’s an instant classic. The good old “Upgrade to wife 1.0” needed a replacement and here it is 🙂

    Well, maybe it can be expanded upon. Will the person with the broken heart initially try to contact their old romance, but get a 204?


  5. I love it!

    But I recommend an initial 302 (temporarily moved) from /romantic-interests to, say /hobbies or perhaps (for men) /beer-self-pity-and-action-movies

    And for those real hard breakups that inspire you to enter a life of monastic seclusion, that 302 would need to become a 301 permanent redirect, to /celibacy


  6. The Web is interactive, so you can act, too.

    Try an HTTP request like

    DELETE /romantic-interest/ HTTP/1.1

    or even

    DELETE / HTTP/1.1



  7. you have a great sense of humor

    so where is the subdirectory which goes like ths

    Stage I

    Stage II
    Inconsistent 404s – sometimes its there and sometimes it
    ‘s not.

    Stage III
    200s on the jokes about men and their bad behavior – and these are getting an especially high # of hits.

    301s on everything else to the bad behavior jokes

    Stage IV
    200s and the number of pages of content in the subdirectory has expanded

    Stage V
    any jokes about male behavior now 301 redirect to jokes about wild romantic encounters in far off places


Leave a Reply

Your email address will not be published. Required fields are marked *