What Keeps Breaking in Blogger’s Link Systems (and How I Half-Fixed It)

Why Your Internal Blogger Links Randomly Break in Custom Templates

  • Hardcoded root-relative paths (/2021/07/blog-title.html) will misfire if you’re working on a subdomain or if your template swaps domains dynamically. Blogger does not normalize internal links across environments.
  • I was debugging a feed redirect and noticed label links routing to /search/label/XYZ failed only via AMP preview. Turns out, AMP serve skips Blogger’s JS rewrite layer and exposes brittle paths.
  • Some third-party templates strip out ${blog.url} in favor of flat HTML, which looks fine until you’re viewing an imported blog as a draft preview. Internal anchor links like href="#top" also break silently in these cases.
  • Disqus and ShareThis don’t respect Blogger’s virtual directory logic. If you’re combining these with rewritten template paths, many comment-related links will loop or orphan unless you canonicalize them manually.
  • There’s a hidden Blogger function named data:post.link that will always generate canonical URLs, but it’s almost never present in modern templates due to speed-focused rewrites stripping out XML includes.

Broken External Redirects After Changing Blogspot Domains

  • After I changed a blog’s subdomain, old post content still linked to images at the previous domain. Blogger does not retroactively rewrite media URLs stored via the image upload tool.
  • External links that point to older drafts (e.g. shared via Google Docs or FeedBurner) may hit 404 if the slug gets regenerated by an edit. Changing the post title after publish can nuke these inbound links.
  • Automatic redirect only kicks in when switching between .blogspot.com variants. If you switch to a custom domain mid-run, Blogger stops forwarding old links unless you add a backfill template logic block.
  • The redirect chain on post links sometimes fails with Cloudflare-protected custom domains. Caching issues lead to a weird flicker+404 combo on first load. Only saw this once, but it nuked three years of newsletter archives.
  • Undocumented: Image CDN URLs can silently fail if you’re switching between 1.bp.blogspot.com and lh3.googleusercontent.com resources in custom HTML. Blogger doesn’t auto-migrate image hosts during theme import.

How Template Designers Accidentally Break inbound parameter URLs

A lot of third-party templates (especially those with SEO optimizations baked into inline JS) will strip or overwrite URL parameters like ?m=1 or ?showComment=123456. These are actually required by Blogger’s internal routing system when viewed on mobile or via notification links.

I once spent 90 minutes wondering why click-throughs from Gmail weren’t attaching the right post anchors. The comment links loaded the homepage with no jump. Tracked it down to a theme that forcibly rewrote window.location to a canonical post URL… with no hash support.

Blogger treats ?showComment= and #comment-form as routing hints, not just anchors. You strip them, you break comment threading.

Also wild: certain AdSense-optimized templates will delay full page load for inline ads, but during that delay Googlebot may follow stripped versions of those URLs — which can nuke the crawl path for comments.

Things That Break When You Enable HTTPS the Day After a Template Swap

This one got me real bad on a client blog. We switched to a new Blogger layout, then enabled HTTPS the next day. External scripts kept throwing MIME type errors, and embedded YouTube iframes wouldn’t load. Turns out:

  • If the template uses http:// anywhere in-script (often in comments-related tools like ShareThis or AddThis), Blogger won’t auto-upgrade to HTTPS.
  • Mixed content errors will silently hide the widgets. They don’t throw fatal errors, but you’ll wonder where your sharing tools went.
  • AdSense will still try to deliver using whatever protocol the widget was initially inserted with. I had an ad slot that stopped showing up entirely until I deleted and re-added it.
  • Blogger’s default blog archive widget blows up under mixed content — dates disappear randomly on Firefox. Edge shows empty bullets instead.
  • You can’t force a refresh from Blogger’s side. Purging cache via dev tools didn’t help. Solution was to manually re-upload the same theme to trigger a clean bake.

Template Import Weirdness with Hidden Fonts and Obscure XML Tags

Some templates declare imported Google Fonts inside CDATA tags, which won’t render properly on some Blogger installations if minify sources or compression flags are toggled. Blogger doesn’t error out — it just strips the entire font block.

I’ve also seen templates that use hidden <b:template-skin> blocks where font-families get overwritten by runtime JS. The net effect: the template previews with Georgia but loads as Arial when viewed by new users. You’ll troubleshoot CSS forever before realizing you’re being pranked by conditional XML blocks.

Another hidden trap: <b:eval> is deprecated but still used in older minimalist templates. If you try to combine a modern header block with an <b:eval>–enabled sidebar, Blogger might “unpublish” the XML silently — it saves, but doesn’t serve to guests for hours.

<b:eval expr='data:post.snippet' />

That line made one of my blogs invisible for half a morning, no joke.

Anchor Tags and Label Searches Don’t Cooperate in Clean URLs

If you obsessively clean your URLs (e.g., stripping ?m=1 or #xyz) and assume that label-based browsing will behave, think again. Blogger’s label system internally pings through /search/label/LabelName — but that route doesn’t persist well on mobile or via embedded windows.

Also: if you link to a label with camelCase directly (like /search/label/WebTools), Blogger canonicalizes it to lowercase during routing, but the page doesn’t always serve new listings. It can cache-fake as empty.

There’s no warning. Just returns a blank search route.

Some themes apply their own label-render routers via JS — if those are enabled, the onclick event cancels propagation before the browser reaches the actual path. Result: clicking labels drops you to the same post, or worse, tries to open a nonexistent modal view.

This Wild Thing with Feed Redirection I Still Don’t Fully Understand

I had a client whose whole footer refused to load when we set a custom feed source in the Blogger admin. The template expected data:feed.url to resolve, but when redirected via FeedBurner, Blogger silently fails to interpolate it. No error, no log — just an empty <footer>.

I tried bouncing the feed source back to default, purging, and hardcoding a backup path, but it only started working again when I disabled the entire feed override tab for 24 hours. After that, the URLs rehydrated as expected.

Blogger logs absolutely none of this.

Case: Which Template Polluted Canonical Paths and Broke AdSense

A client installed a premium magazine-style template (no name but it had “PRO” in the zip) and their traffic tanked for two weeks. I finally figured out it was inserting <link rel="canonical" href="" /> with an empty string for all post pages. That tells Google the canonical URL is… nothing.

Turns out, the template used JS to fill the canonical tag dynamically, but the code failed on slow mobiles, which meant blank or duplicate canonicals. Some pages got delisted. AdSense also started treating them as repeats and dropped match-rate. Reddit parsing even showed share links as “deleted”.

I hard-reversed it by removing the script and replacing it with a static <b:include data='post' name='postCanonical'/>, which is the only way Blogger plays nice with search now.

Similar Posts