2025-11-14 20:55:00
I've managed to get my Jekyll based site working behind Bunny CDN, while maintaining my .htaccess redirects. Here's how I did it...
Since switching back to Jekyll recently, I’ve been running this site on a Ionos-hosted VPS, then using a little deploy script to build the site and rsync it up.
This all worked fine, but I really wanted to use Bunny CDN for more than just hosting a few images and my custom font. Being a static site, I could have dumped everything onto their storage platform, but I have a metric tonne of redirects in a .htaccess file from various platform migrations over the years.
Bunny’s Edge Platform could have handled these, but with the number of redirects I have, it would have been a slog to maintain. So I assumed I’d never be able to put Bunny in front of my Jekyll site easily and went about my business.
💡 Then I had an epiphany.
What if I created a Bunny pull zone that uses kevquirk.com as the public domain, then set up a separate domain on my VPS, host the site there, and use that as the pull zone origin?
My theory was that Bunny would still be requesting content from the VPS, so my .htaccess redirects might still work.
…turns out, they did.
I duplicated my live site so I could experiment safely. The setup looked like this:
test.kevquirk.com - the domain configured in the Bunny pull zonesrc.qrk.one - the origin domain on my VPS, where the site actually livesThe first thing I had to do was update the url field in my Jekyll _config.yml from kevquirk.com to test.kevquirk.com, rebuild the site, and upload it to src.qrk.one.
Now, you might be thinking, “Kev, why build the site with the wrong domain?”
But I haven’t. By building the site with the test domain, all links point to test.kevquirk.com/.... If I built it with the origin domain, all internal links would lead to the wrong place. They would still work, but the site would be served from src.qrk.one, which is not what I want.
Next up was redirect testing. I visited /feed, which should hit .htaccess and redirect to /feed.xml. The redirect worked fine, but the resulting URL was being served from the origin domain.
So instead of seeing test.kevquirk.com/feed.xml I saw src.qrk.one/feed.xml.
This happened because Bunny requested the file from the origin using its own hostname, not the hostname I typed. In simple terms:
test.kevquirk.com/feed.src.qrk.one), not the one I typed.src.qrk.one/feed and applied the .htaccess redirect to /feed.xml.src.qrk.one.So Apache went:
“Oh, you want
/feed? Sure. That’s atsrc.qrk.one/feed.xml. Here ya go…”
This would not break anything for visitors, but I didn’t want src.qrk.one appearing anywhere. It looked messy.
Two changes fixed it:
test.kevquirk.com as a domain alias of src.qrk.one on my VPS.Forward Host Headers makes Bunny tell the VPS the hostname the visitor used. So instead of:
“I’m asking for this on behalf of
src.qrk.one.”
Bunny says:
“I’m asking for this on behalf of
test.kevquirk.com, notsrc.qrk.one.”
The domain alias ensures Apache accepts that hostname and serves it correctly.
Magic. 🪄🐇
The other thing to double-check is that every page sets a proper canonical URL. The origin domain is publicly accessible, so crawlers need to know which domain is the real one. That should always be the Bunny pull zone domain.
In Jekyll this is simple. Add the following to the head section of your layout:
<link rel="canonical" href="{{ page.url | absolute_url }}">
With the redirect behaviour sorted, the last step was to add a purge step to my deploy script so Bunny knows to fetch the latest version whenever I publish a new post or update something.
Here’s the snippet I added:
# --- Clear Bunny Cache ---
echo "🗑 Clearing Bunny Cache..."
PURGE_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X POST \
-H "AccessKey: $BUNNY_ACCESS_KEY" \
"https://api.bunny.net/pullzone/$PULL-ZONE-ID/purgeCache")
if [ "$PURGE_RESPONSE" -ne 200 ] && [ "$PURGE_RESPONSE" -ne 204 ]; then
echo "⚠️ Bunny purge failed (HTTP $PURGE_RESPONSE)"
exit 1
fi
I set my Bunny API key and Pull Zone ID as variables at the top of the script. The if statement simply says, “If the response isn’t 200 or 204, tell Kev what went wrong.”
And that is it. Last night I flipped the switch. Bunny CDN now sits in front of the live site. I also moved the VPS from Ionos to Hetzner because Ionos now charge extra for a Plesk licence. I went with Hestia as the control panel on the new server.
If you spot any bugs, please do let me know, but everything should be hopping along nicely now. (See what I did there? God I’m funny!)
Thanks for reading this post via RSS. RSS is great, and you're great for using it. ❤️
2025-11-13 18:59:00
Alex has written a lovely reflection on rediscovering the joy of email as a slower, more deliberate way to talk with people. Well worth a read if you miss when the inbox felt like a conversation, not a chore.
Alex’s blog is a one that I only discovered a couple days ago when he emailed me about my previous post. We ended up having a good old natter about all kinds of things.
As is par for the course, I checked out his blog, quickly found we have a lot in common, and our love of email is one of them.
As I’ve mentioned before, I’m very anal with my email and like Alex, I also look forward to checking my email every morning as there’s usually at least 1 interesting email from a reader. Today I have 5 of them to reply to (including a response from Alex) - it’s one of my favourite times of the day.
Anyway, I digress. Like Alex, I love email - it’s a fantastic way to communicate with the rest of the world. It’s a tried and tested, robust tool. It’s not email that’s the problem, it’s the people who use it.
Alex is also building his own CMS for HTML, which is another thing we have in common.
Anyway, go read his blog. It’s great.
Thanks for reading this post via RSS. RSS is great, and you're great for using it. ❤️
2025-11-11 20:22:00
My mum recently asked me what I think happens after we die. Not being religious, I think my response surprised her.
The death of my sister has been weighing heavily on my mum’s mind, and she recently asked me what I think happens after we die. She knows I’m an atheist, so she wasn’t expecting anything spiritual or religious. Even so, I think my answer gave her some comfort, so I thought I’d share it here.
My initial response was very direct: nothing. She paused, then asked:
What? Like just blackness?
No. “Blackness” still implies something. I think death is the absence of anything at all. Just like before you were born: there’s no consciousness, no awareness, no blackness. Simply nothing.
But I could tell she wanted more than a blunt philosophical answer, so I went a bit deeper.
I genuinely believe that, after we die, we’re all reincarnated. Not spiritually, but literally.
Every element that makes us - oxygen, nitrogen, iron, calcium etc. were forged in the heart of a star through nuclear fusion. Lighter elements like hydrogen and helium came from earlier processes, but the vast majority of what we’re made of was created in stars.
So yes, dear reader, you’re made of stardust. 🌟
When we die, all of those elements that make you you break down and are reabsorbed into the universe. And basic physics tells us that energy cannot be created or destroyed. So the energy that powered you is also recycled back into the cosmos.
So what happens after we die? Given enough time, the elements that formed my body and the energy that animated it will likely be used again to create new life. It won’t be me in any conscious sense, but some part of what once was me will exist in something else.
That feels like a kind of reincarnation.
I don’t think this was the answer my mum was expecting, but she told me she liked it. It gave her some comfort to know that even though Lisa is gone, the physical stuff that made her is being recycled. In that sense, she isn’t truly gone. None of us are.
What do you think happens after we die? I know this is all a bit deep and meaningful, and a departure of what I usually post. But this is the shit that’s rattling around my grey matter at the moment. 🤷🏻♂️
Thanks for reading this post via RSS. RSS is great, and you're great for using it. ❤️
2025-11-06 19:45:00
When it comes to email, are you an archiver or a deleter? Chris talks about his approach, and some of what others do. I thought I’d add my approach to the pile.
When it comes to email, I’m extremely anal. I’m a zero inbox kinda guy - my inbox is a place for emails to temporarily live before I deal with them. Once they’re dealt with, they either get archived or deleted.
Right now I have 5 emails in my personal mailbox, and 7 in my work email. I treat it as a kind of living to-do list. I get tonnes of email, especially in work (hundreds a day), so to anyone who says they get too much email to do inbox zero, I call bullshit.
Anyway, I digress, this post isn’t about my love of zero inbox. That’s a post for another day. After reading Chris’ post, I dropped him an email with my thoughts, but I decided to write them out here too.
Personally, I do a combination of both. I probably delete around half of the email I receive, but for the other half, I do one of two things:
I have a clean up of my mailbox at the end of every year. Everything in my sent items and archives get moved to a sub-folder by year, then the oldest year gets deleted. I only keep 3 years of mail in my mailbox.
The exception to this is my Keep folder. Stuff in there is considered important and kept indefinitely.
I host my email with Zoho, where I get 5GB of storage space. Some people think that’s not a lot, considering you get 3x that with a free Gmail account. But 5GB is an absolute shit-tonne of storage when you consider that emails are basically text with the odd attachment.
With my 3 year archive, and decades of important email in my Keep folder, I’m currently using 1.19GB of the space that comes with my mailbox.
Sorry, I went off on another tangent there…clearly I’m very passionate about email and should probably write more posts about it. Maybe I should start a blog dedicated to email, just like Chris did! 🤔
So that’s my approach to archive vs deletion, what do you do? I hope you’re not one of those heathens who has tens of thousands of unread email in your inbox? If so, I’m not sure we can be friends.
Thanks for reading this post via RSS. RSS is great, and you're great for using it. ❤️
2025-11-05 21:53:00
Ever searched for a fix to a technical problem, only to get a 1,000 word essay on what the thing is? Yeah, me too.
You know the drill. You Google “how to fix a Git conflict”, and every result spends five paragraphs explaining what Git is.
Mate, I’m here because I already use Git. I don’t need a Wikipedia entry, I need the command that fixes my bloody merge.
It’s the same with every technical topic. SEO-stuffed filler drowning the one thing that actually matters — the answer.
Just give me the fix. That’s it. Please, stop explaining what things are.
</rant>
Thanks for reading this post via RSS. RSS is great, and you're great for using it. ❤️
2025-10-30 21:36:00
2001 was when blogging grew up. What started as scattered personal diaries and link dumps suddenly became something bigger. People started writing in real-time about world events, with tools like RSS and Movable Type giving blogs the platform and momentum to get their message out there easily.
This is a great post and a walk down memory lane from around the time I became interested in reading blogs. Although my own blogging came much later, in around 2011, I was a consumer long before then.
More broadly, Richard’s Cyber Cultural site is a fantastic resource for all kinds on web nostalgia. It’s one of my favourites.
Thanks for reading this post via RSS. RSS is great, and you're great for using it. ❤️