Google Search Console Indexing Repair Status

Date: January 25-26, 2026 Status: ALL FIXES COMPLETE - Validation In Progress


Summary

Three indexing issues were identified and fully resolved for sempers.com:

Issue Status Resolution
Soft 404 (2 pages) FIXED .htaccess now returns HTTP 404
401 Unauthorized (1 page) FIXED robots.txt blocks /feedback/
ftp.sempers.com duplicate content FIXED 301 redirect to sempers.com

Google Search Console validation was initiated on January 25, 2026. Full resolution expected in 2-4 weeks.


Issues Identified

1. Soft 404 Errors

2. 401 Unauthorized Error

3. ftp.sempers.com Serving Website Content (Discovered During Investigation)


All Changes Made

1. Production .htaccess Fix (Manual via SiteGround)

Location: SiteGround Site Tools → File Manager → public_html/.htaccess

Before:

# 404 handling
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /404error.html [L,R=301]

After:

# 404 handling
ErrorDocument 404 /404error.html

Result: Non-existent URLs now return HTTP/1.1 404 Not Found (verified via curl)


2. GitHub Workflow Files Fixed

The deployment workflows were hardcoding the broken .htaccess and overwriting it on every deploy. All three were fixed:

File Commit
.github/workflows/deploy-production.yml f34af26
.github/workflows/ci.yml f34af26
.github/workflows/deploy-eng.yml f34af26

Change: Same as above - replaced RewriteRule with ErrorDocument 404


3. robots.txt Updated

File: /Users/zjs/engineering/sempers.com/public_html/robots.txt

Added:

Disallow: /feedback/
Disallow: /assets/includes/
Disallow: /assets/guides/

Commit: 14d0cc3


4. ftp.sempers.com Redirect Added

Location: SiteGround Site Tools → Domain → Redirects

Configuration:

Result: All requests to ftp.sempers.com now redirect to sempers.com (verified via curl)


Verification Results

All fixes verified working on January 26, 2026:

# 404 now returns proper status
$ curl -I https://sempers.com/fake-page-12345
HTTP/1.1 404 Not Found

# ftp subdomain redirects
$ curl -I https://ftp.sempers.com/
HTTP/1.1 301 Moved Permanently
Location: https://sempers.com

Google Search Console Actions Taken

  1. Validated “Soft 404” fix - January 25, 2026

    • Status: Validation started
    • Affected pages: 2 URLs
  2. robots.txt will be re-crawled automatically within 24-48 hours


Root Cause Analysis

Why the initial fix didn’t work via deployment:

  1. Local .htaccess had the correct ErrorDocument 404 directive
  2. CI/CD pipeline deployed it to production via rsync
  3. BUT the workflow had a subsequent step that overwrote .htaccess with a hardcoded version containing the broken RewriteRule
  4. This hardcoded version was in all three workflow files since their creation
  5. Every deployment re-broke the 404 handling

Why we had to fix it manually on SiteGround:


Timeline

Date Action
Jan 25, 2026 Initial investigation - identified soft 404 and 401 issues
Jan 25, 2026 First deployment attempt (failed - workflow overwrote fix)
Jan 25, 2026 SiteGround support contacted - confirmed server .htaccess was different
Jan 26, 2026 Manual fix applied via SiteGround File Manager
Jan 26, 2026 Verified 404 returns correct status code
Jan 26, 2026 Fixed all three GitHub workflow files (commit f34af26)
Jan 26, 2026 Discovered ftp.sempers.com duplicate content issue
Jan 26, 2026 Added 301 redirect for ftp.sempers.com in SiteGround
Jan 26, 2026 Validated fix in Google Search Console

Expected Resolution


Files Modified (Summary)

File Location Change
.htaccess Production server (SiteGround) ErrorDocument 404
robots.txt public_html/robots.txt Added Disallow rules
deploy-production.yml .github/workflows/ Fixed 404 handling
ci.yml .github/workflows/ Fixed 404 handling
deploy-eng.yml .github/workflows/ Fixed 404 handling
Redirect SiteGround Site Tools ftp.sempers.comsempers.com

Lessons Learned

  1. Check deployment workflows for hardcoded overrides - The .htaccess was being overwritten by CI/CD, not just deployed from repo
  2. Verify production matches local - Always check what’s actually on the server, not just what’s in git
  3. Check all subdomains - ftp.sempers.com was serving duplicate content and causing indexing issues
  4. SiteGround nginx sits in front of Apache - Some issues require server-level config, not just .htaccess

Last updated: January 26, 2026



Round 3: February 9, 2026

Branch: fix/seo-indexing-audit → merged via PR #115 Status: ALL FIXES COMPLETE — Monitor GSC in 2-4 weeks


Situation

Google Search Console showed 134 not-indexed pages vs 53 indexed. Investigation revealed multiple compounding issues.

Root Causes Identified

1. Production .htaccess overwritten on every deploy (AGAIN)

The deploy-production.yml workflow was overwriting .htaccess with a stripped-down version missing:

Impact: 48 “Duplicate, Google chose different canonical” pages

2. Wildcard subdomain (*.sempers.com) serves full site

Any subdomain — www, ftp, aaa, ww, xyz123 — returns 200 OK with full content. This is an nginx/SiteGround-level issue.

Impact: ~65 URLs across ftp, www, aaa, ww subdomains in GSC

3. QA/ENG environments indexable by Google

qa.sempers.com and eng.sempers.com had no X-Robots-Tag noindex header.

4. Sitemap included Google verification file

googlede6683829bc41ed6.html was listed in sitemap.xml.

5. robots.txt had Crawl-delay: 10

Throttling crawler speed unnecessarily.

Fixes Applied (PR #115, deployed Feb 9, 2026)

File Change
.github/workflows/deploy-production.yml Full .htaccess with HTTPS redirect, www redirect, trailing slash removal, security headers, cache rules
.github/workflows/ci.yml Added X-Robots-Tag: noindex, nofollow for QA
.github/workflows/deploy-eng.yml Added X-Robots-Tag: noindex, nofollow for ENG
public_html/sitemap.xml Removed Google verification file
public_html/robots.txt Removed Crawl-delay: 10
src/robots.txt Removed Crawl-delay: 10

SiteGround Changes (Manual, Feb 9, 2026)

Change Status
ftp.sempers.com HTTPS Enforce enabled DONE
All caches flushed (4 domains) DONE
Wildcard subdomain → 301 redirect to sempers.com (except qa/eng) DONE (via Cloudflare, see below)

GSC URL Breakdown (Feb 9, 2026)

Excluded by noindex (5) — All expected

Soft 404 (2) — Subdomain issue

Crawled not indexed (3) — Subdomain issue

Not found 404 (1) — No action needed

Page with redirect (52) — Mix of issues

Duplicate canonical (48) — Wildcard subdomain

Key Discovery: NGINX Direct Delivery was ON

Despite SiteGround support claiming it was disabled in January, NGINX Direct Delivery was enabled for all 4 domains. This means nginx was serving static files directly, bypassing Apache/.htaccess entirely. This is why the www→non-www .htaccess rule didn’t work on inner pages.

Cloudflare Solution (Feb 9, 2026)

Instead of waiting for SiteGround Expert Care, Cloudflare (free tier) was set up in front of SiteGround:

Setting Value
Plan Free
Nameservers arely.ns.cloudflare.com, henrik.ns.cloudflare.com
Registrar GoDaddy (nameservers changed from ns1/ns2.siteground.net)
SSL Full (strict)
Redirect Rule All subdomains → sempers.com except qa.sempers.com and eng.sempers.com (301)

SiteGround NGINX Direct Delivery was then disabled for all 4 domains since Cloudflare handles edge caching. Apache now processes all requests via .htaccess.

SiteGround Expert Care request was cancelled (no longer needed).

Verification (Feb 9, 2026)

# www redirect — 301 to sempers.com (WORKING)
$ curl -I https://www.sempers.com/blog/blog.html
HTTP/1.1 301 Moved Permanently
Location: https://sempers.com/blog/blog.html

# Random subdomain — 301 to sempers.com (WORKING)
$ curl -I https://xyz123.sempers.com/
HTTP/1.1 301 Moved Permanently
Location: https://sempers.com/

# QA excluded from redirect (WORKING)
$ curl -I https://qa.sempers.com/
HTTP/1.1 401 Unauthorized

# Main site serves normally (WORKING)
$ curl -I https://sempers.com/
HTTP/1.1 200 OK

See business-files/CLOUDFLARE_SETUP_INSTRUCTIONS.md for full setup details.

Next Steps

  1. Monitor GSC in 2-4 weeks for improvement
  2. Sitemap resubmitted Feb 9 (121 pages discovered)

Last updated: February 9, 2026