<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>SEO on Luis Sousa Blog</title>
    <link>https://89393b0c.nuvai-blog.pages.dev/tags/seo/</link>
    <description>Recent content in SEO on Luis Sousa Blog</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sun, 08 Mar 2026 10:00:00 +0000</lastBuildDate>
    <atom:link href="https://89393b0c.nuvai-blog.pages.dev/tags/seo/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Fixing &#39;Robots.txt Unreachable&#39; in Google Search Console with Traefik and Docker</title>
      <link>https://89393b0c.nuvai-blog.pages.dev/posts/fixing-robots-txt-unreachable-traefik-docker/</link>
      <pubDate>Sun, 08 Mar 2026 10:00:00 +0000</pubDate>
      <guid>https://89393b0c.nuvai-blog.pages.dev/posts/fixing-robots-txt-unreachable-traefik-docker/</guid>
      <description>&lt;p&gt;We run a travel blog (&lt;a href=&#34;https://joyofexploringtheworld.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;joyofexploringtheworld.com&lt;/a&gt;) on Docker Compose with Traefik v3 and Cloudflare. One morning Google Search Console showed every page blocked from indexing with &amp;ldquo;Failed: Robots.txt unreachable&amp;rdquo;. The site was working fine in a browser, so what was going on?&lt;/p&gt;&#xA;&lt;p&gt;Two separate issues were conspiring to break Googlebot&amp;rsquo;s ability to fetch &lt;code&gt;/robots.txt&lt;/code&gt;. Here&amp;rsquo;s what we found and how we fixed both.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-setup&#34;&gt;&#xA;  The setup&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#the-setup&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Our WordPress service sits on two Docker networks: &lt;code&gt;app-network&lt;/code&gt; (shared with Traefik, Redis, imgproxy) and &lt;code&gt;db-network&lt;/code&gt; (shared with MariaDB). We run two scaled WordPress containers behind Traefik&amp;rsquo;s load balancer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SEO Housekeeping: Focus Keywords and Sitemaps That Match</title>
      <link>https://89393b0c.nuvai-blog.pages.dev/posts/seo-housekeeping-focus-keywords-sitemaps/</link>
      <pubDate>Sat, 07 Mar 2026 12:03:00 +0000</pubDate>
      <guid>https://89393b0c.nuvai-blog.pages.dev/posts/seo-housekeeping-focus-keywords-sitemaps/</guid>
      <description>&lt;p&gt;We run a travel blog on a budget VPS (&lt;a href=&#34;https://joyofexploringtheworld.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;joyofexploringtheworld.com&lt;/a&gt;) that helps travellers plan itineraries. Keeping SEO clean without premium plugins is part of the game. Here’s how we fixed mixed signals between focus keywords, noindex, and sitemaps using Rank Math’s free tier.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-focus-keywords-matter&#34;&gt;&#xA;  Why focus keywords matter&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#why-focus-keywords-matter&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Each post should have one clear focus phrase—the main search term you want it to rank for. Rank Math stores this in &lt;code&gt;rank_math_focus_keyword&lt;/code&gt; post meta. We filled gaps in bulk using WP-CLI, deriving keywords from post titles and search intent (e.g. “cherry blossoms in Paris”, “5 day itinerary Budapest”). Skip utility pages like checkout, receipt, and privacy—they don’t need focus keywords.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Managing Cloudflare www-to-apex redirects with Terraform for WordPress SEO</title>
      <link>https://89393b0c.nuvai-blog.pages.dev/posts/cloudflare-www-to-apex-redirects-terraform/</link>
      <pubDate>Sat, 07 Mar 2026 12:00:00 +0000</pubDate>
      <guid>https://89393b0c.nuvai-blog.pages.dev/posts/cloudflare-www-to-apex-redirects-terraform/</guid>
      <description>&lt;p&gt;For SEO, &lt;code&gt;www.example.com&lt;/code&gt; should 301 redirect to &lt;code&gt;example.com&lt;/code&gt; so search engines see one canonical host. We manage our travel blog&amp;rsquo;s infrastructure with Terraform, including Cloudflare. When we tried to add the www-to-apex redirect, we hit &amp;ldquo;exceeded maximum number of zone rulesets.&amp;rdquo; Here&amp;rsquo;s how we fixed it and manage redirects as code.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-terraform-for-cloudflare&#34;&gt;&#xA;  Why Terraform for Cloudflare&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#why-terraform-for-cloudflare&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Terraform gives you versioned, repeatable config. No manual dashboard drift, no &amp;ldquo;who changed what&amp;rdquo; surprises. Redirects live in &lt;code&gt;main.tf&lt;/code&gt; and are applied consistently.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rank Math sitemap not loading with Traefik (and how to fix it)</title>
      <link>https://89393b0c.nuvai-blog.pages.dev/posts/rank-math-sitemap-not-loading-traefik/</link>
      <pubDate>Sat, 07 Mar 2026 12:00:00 +0000</pubDate>
      <guid>https://89393b0c.nuvai-blog.pages.dev/posts/rank-math-sitemap-not-loading-traefik/</guid>
      <description>&lt;p&gt;We run a travel blog (&lt;a href=&#34;https://joyofexploringtheworld.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;joyofexploringtheworld.com&lt;/a&gt;) on a budget VPS with Docker Compose, Cloudflare, and Traefik. When we added Rank Math for SEO, the sitemap worked in the admin but returned 404 on the public URL. Here&amp;rsquo;s what was going on and how we fixed it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-problem&#34;&gt;&#xA;  The problem&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#the-problem&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Rank Math generates sitemaps at runtime via &lt;code&gt;index.php?sitemap=1&lt;/code&gt;. On Apache or Nginx with &lt;code&gt;.htaccess&lt;/code&gt;/rewrite rules, the pretty URL &lt;code&gt;/sitemap_index.xml&lt;/code&gt; gets routed to WordPress automatically. With Traefik, that routing doesn&amp;rsquo;t exist by default—Traefik doesn&amp;rsquo;t use &lt;code&gt;.htaccess&lt;/code&gt;, so &lt;code&gt;/sitemap_index.xml&lt;/code&gt; never reaches WordPress and you get a 404.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
