vienalatina/infra/caddy/Caddyfile
Claude b96920c6bc
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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NizVpJ2dwzCbjCrTLCjeHn
2026-09-18 13:32:42 +00:00

64 lines
2.0 KiB
Caddyfile

# /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. 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
}
ci.vienalatina.com {
reverse_proxy 127.0.0.1:8000
}
# ---------------------------------------------------------------------------
# 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
}
}