From 910889cde88e287e7872a0bfeffe15627ae78495 Mon Sep 17 00:00:00 2001 From: Ricardo Date: Tue, 24 Feb 2026 16:18:52 +0100 Subject: [PATCH] fix: remove trailing slash from site.url to prevent double-slash URLs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit site.url had a trailing slash (added for Mastodon rel=me verification), which caused double slashes in all URL constructions like {{ site.url }}/auth → https://rmendes.net//auth This broke IndieAuth login — indielogin.com read the authorization_endpoint link tag with //auth and redirected users there, which 404'd in nginx. Split into site.url (no slash, for URL construction) and site.me / site.author.url (with slash, for Mastodon rel=me strict matching). Also fixed twitter:image meta tags to use smart slash logic matching the og:image pattern (check if path starts with / before prepending one). --- _data/site.js | 12 +++++++----- _includes/layouts/base.njk | 6 +++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/_data/site.js b/_data/site.js index 7fbea5e..40b6063 100644 --- a/_data/site.js +++ b/_data/site.js @@ -62,14 +62,16 @@ function buildSocialFromFeeds() { return links; } -// Ensure URL has trailing slash (Mastodon rel="me" verification uses strict string match) -const siteUrl = (process.env.SITE_URL || "https://example.com").replace(/\/$/, "") + "/"; +// site.url: no trailing slash — used as URL base for path concatenation ({{ site.url }}/path) +// site.me / site.author.url: trailing slash — Mastodon rel="me" requires exact match +const siteUrlBase = (process.env.SITE_URL || "https://example.com").replace(/\/$/, ""); +const siteUrlWithSlash = siteUrlBase + "/"; export default { // Basic site info name: process.env.SITE_NAME || "My IndieWeb Blog", - url: siteUrl, - me: siteUrl, + url: siteUrlBase, + me: siteUrlWithSlash, locale: process.env.SITE_LOCALE || "en", description: process.env.SITE_DESCRIPTION || @@ -78,7 +80,7 @@ export default { // Author info (shown in h-card, about page, etc.) author: { name: process.env.AUTHOR_NAME || "Blog Author", - url: siteUrl, + url: siteUrlWithSlash, avatar: process.env.AUTHOR_AVATAR || "/images/default-avatar.svg", title: process.env.AUTHOR_TITLE || "", bio: process.env.AUTHOR_BIO || "Welcome to my IndieWeb blog.", diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index 247dca5..b1f3e59 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -45,11 +45,11 @@ {% if ogPhoto and ogPhoto != "" and (ogPhoto | length) > 10 %} - + {% elif image and image != "" and (image | length) > 10 %} - + {% elif contentImage and contentImage != "" and (contentImage | length) > 10 %} - + {% elif hasOgImage %} {% endif %}