diff --git a/Caddyfile-preview b/Caddyfile-preview new file mode 100644 index 0000000..29d1ccf --- /dev/null +++ b/Caddyfile-preview @@ -0,0 +1,31 @@ +:3081 { + root * dist + + # Match requests with trailing slashes and rewrite them + @trailing_slash { + path_regexp strip_slash ^(.+)/$ # Match paths ending with / + } + rewrite @trailing_slash {re.strip_slash.1} # Remove the trailing slash + + try_files {path}.html {path}/index.html {path} + encode zstd gzip + file_server + + # Cache images, videos, fonts, etc. for 1 year (365 days) + @static_assets { + path_regexp static_assets \.(jpg|jpeg|png|gif|svg|ico|mp4|webm|woff|woff2|eot|ttf|otf|js)$ + } + header @static_assets Cache-Control "public, max-age=31536000, immutable" + + # Optionally, you can set a fallback for other files + header ?Cache-Control "public, max-age=3600" + + handle_errors { + @404 { + expression {http.error.status_code} == 404 + } + rewrite @404 /404.html + file_server + } +} + diff --git a/justfile b/justfile index 48cec68..4d1c30a 100644 --- a/justfile +++ b/justfile @@ -56,7 +56,7 @@ ssg: # Preview server preview: - npx http-server dist + caddy run --config Caddyfile-preview # SSG export of production server export: clean