# Phase 1: Blog migration — cytrogen.icu → blog.cytrogen.icu # # This is a reference copy of the redirect blocks deployed to /etc/caddy/Caddyfile. # The production Caddyfile also includes blocks for sourcehut, beszel, freshrss, # stalwart, etc. — only the realm-relevant portions are shown here. # # Status: DEPLOYED 2026-02-27 # Blog now served from /var/www/blog.cytrogen.icu blog.cytrogen.icu { root * /var/www/blog.cytrogen.icu file_server encode gzip @static path *.css *.js *.jpg *.jpeg *.png *.gif *.ico *.svg *.webp *.woff *.woff2 *.ttf *.eot header @static Cache-Control "public, max-age=2592000, immutable" @html path *.html header @html Cache-Control "public, max-age=3600, must-revalidate" handle_errors { @4xx expression `{err.status_code} >= 400 && {err.status_code} < 500` handle @4xx { rewrite * /{err.status_code}.html file_server } @5xx expression `{err.status_code} >= 500` handle @5xx { rewrite * /{err.status_code}.html file_server } } try_files {path} {path}/ {path}.html } # 301 permanent redirect — root domain to blog subdomain cytrogen.icu, www.cytrogen.icu { header Link `; rel="canonical"` header X-Robots-Tag "noindex, nofollow" redir https://blog.cytrogen.icu{uri} permanent } # Phase 4: Replace the redirect block above with: # # cytrogen.icu, www.cytrogen.icu { # root * /var/www/realm # file_server # encode gzip # try_files {path} {path}/ {path}.html # }