From b96920c6bcf1b85affa1e1ad9bd77e0289ef4807 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 18 Sep 2026 13:32:42 +0000 Subject: [PATCH] Enable the vienalatina.com site block in the Caddyfile The block was parked behind a comment marker until the domain's A record pointed at this server. It does now, so the checked-in config should match what is actually serving; leaving it commented meant a redeploy from the repo would silently take the site down. Also corrects the header note to say why the order is DNS-then-reload: the ACME HTTP-01 challenge for vienalatina.com can only pass once the domain already resolves here. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01NizVpJ2dwzCbjCrTLCjeHn --- infra/caddy/Caddyfile | 96 +++++++++++++++++++++---------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/infra/caddy/Caddyfile b/infra/caddy/Caddyfile index 43df2d8..b71d78d 100644 --- a/infra/caddy/Caddyfile +++ b/infra/caddy/Caddyfile @@ -1,9 +1,9 @@ # /etc/caddy/Caddyfile — copy this file there, then: sudo systemctl reload caddy # # Caddy fetches and renews Let's Encrypt certificates automatically the first -# time a domain's DNS points at this server. git.* and ci.* work immediately; -# the vienalatina.com block stays commented until cutover day (Sunday evening), -# because Caddy can only get its certificate once the A record points here. +# time a domain's DNS points at this server. Order matters on a cutover: move +# the A record here first, then reload Caddy — the ACME HTTP-01 challenge for +# vienalatina.com only succeeds once the domain already resolves to this box. git.vienalatina.com { reverse_proxy 127.0.0.1:3000 @@ -14,50 +14,50 @@ ci.vienalatina.com { } # --------------------------------------------------------------------------- -# UNCOMMENT EVERYTHING BELOW ON CUTOVER DAY (after flipping the A record) +# Live since cutover (A record for vienalatina.com points at this server). # --------------------------------------------------------------------------- -# www.vienalatina.com { -# redir https://vienalatina.com{uri} 301 -# } -# -# vienalatina.com { -# root * /var/www/vienalatina.com -# encode zstd gzip -# file_server -# -# # llms.txt is markdown (matches the old WP behaviour) -# header /llms.txt Content-Type "text/markdown; charset=utf-8" -# -# # --- 301s for old WordPress URL patterns ----------------------------- -# -# # /?p=123 style permalinks → home (add specific mappings as GSC reports them) -# @wp_query_permalink { -# path / -# query p=* -# } -# redir @wp_query_permalink / 301 -# -# # WP category base was /categoria/… (Spanish slugs); Hugo uses /categories/… -# @old_category path_regexp oldcat ^/categoria/(.*)$ -# redir @old_category /categories/{re.oldcat.1} 301 -# -# # WP author archives have no Hugo equivalent → home -# @old_author path /autor/* -# redir @old_author / 301 -# -# # Old WP media library URLs → migrated uploads folder -# @old_uploads path_regexp oldup ^/wp-content/uploads/(?:\d{4}/\d{2}/)?(.*)$ -# redir @old_uploads /uploads/{re.oldup.1} 301 -# -# # Anything else that starts with /wp- doesn't exist anymore -# @wp_leftovers path /wp-admin/* /wp-login.php /wp-json/* /xmlrpc.php -# redir @wp_leftovers / 301 -# -# # Custom 404 falls back to Hugo's 404 page -# handle_errors { -# @404 expression {err.status_code} == 404 -# rewrite @404 /404.html -# file_server -# } -# } +www.vienalatina.com { + redir https://vienalatina.com{uri} 301 +} + +vienalatina.com { + root * /var/www/vienalatina.com + encode zstd gzip + file_server + + # llms.txt is markdown (matches the old WP behaviour) + header /llms.txt Content-Type "text/markdown; charset=utf-8" + + # --- 301s for old WordPress URL patterns ----------------------------- + + # /?p=123 style permalinks → home (add specific mappings as GSC reports them) + @wp_query_permalink { + path / + query p=* + } + redir @wp_query_permalink / 301 + + # WP category base was /categoria/… (Spanish slugs); Hugo uses /categories/… + @old_category path_regexp oldcat ^/categoria/(.*)$ + redir @old_category /categories/{re.oldcat.1} 301 + + # WP author archives have no Hugo equivalent → home + @old_author path /autor/* + redir @old_author / 301 + + # Old WP media library URLs → migrated uploads folder + @old_uploads path_regexp oldup ^/wp-content/uploads/(?:\d{4}/\d{2}/)?(.*)$ + redir @old_uploads /uploads/{re.oldup.1} 301 + + # Anything else that starts with /wp- doesn't exist anymore + @wp_leftovers path /wp-admin/* /wp-login.php /wp-json/* /xmlrpc.php + redir @wp_leftovers / 301 + + # Custom 404 falls back to Hugo's 404 page + handle_errors { + @404 expression {err.status_code} == 404 + rewrite @404 /404.html + file_server + } +}