From: Lady <redacted>
Date: Sun, 18 Sep 2022 08:26:03 +0000 (-0700)
Subject: Add sample Caddyfile
X-Git-Tag: 0.1.2
X-Git-Url: https://git.ladys.computer/x_status_git/commitdiff_plain/dcc57606d759a64249d4273d44f63aef80d9e1b6?ds=inline

Add sample Caddyfile
---

diff --git a/Caddyfile b/Caddyfile
new file mode 100644
index 0000000..b4bcbff
--- /dev/null
+++ b/Caddyfile
@@ -0,0 +1,131 @@
+status.site.example {
+	root * /home/USERNAME/status.site.example/public
+
+	@slash {
+		path_regexp slash /$
+	}
+
+	@jsonld {
+		path_regexp jsonld \.jsonld$
+	}
+
+	@bare {
+		not path_regexp /$
+		not path_regexp \.jsonld$
+	}
+
+	@empty {
+		expression {re.matcher.suffix} == ""
+	}
+
+	handle /about {
+		rewrite * /.about.html
+		header Link </about.jsonld>;rel=meta;type="application/ld+json"
+	}
+
+	redir /about/ /about
+
+	rewrite /about.jsonld /about/index.jsonld
+
+	handle /statuses {
+		rewrite * /.statuses.html
+		header Link </statuses.jsonld>;rel=meta;type="application/ld+json"
+	}
+
+	@statusroot {
+		path_regexp matcher ^/statuses/(?P<path>.*)
+		not path_regexp ^/statuses/index\.
+	}
+
+	handle @statusroot {
+		handle /statuses/ {
+			redir * /statuses
+		}
+
+		handle {
+			redir * /{re.matcher.path}
+		}
+	}
+
+	rewrite /statuses.jsonld /statuses/index.jsonld
+
+	@dated {
+		path_regexp matcher ^/(?P<ym>\d{4}-\d{2})(?P<suffix>/[^/.]+)?(?:\..*|/)?$
+	}
+
+	handle @dated {
+		handle @empty {
+			handle @bare {
+				rewrite * /.topic.html
+				header Link </{re.matcher.ym}.jsonld>;rel=meta;type="application/ld+json"
+			}
+
+			handle @slash {
+				redir * /{re.matcher.ym}
+			}
+
+			handle @jsonld {
+				rewrite * /{re.matcher.ym}/index.jsonld
+			}
+		}
+
+		handle {
+			handle @bare {
+				rewrite * /.status.html
+				header Link </{re.matcher.ym}.jsonld>;rel=meta;type="application/ld+json"
+			}
+
+			handle @slash {
+				redir * /{re.matcher.ym}{re.matcher.suffix}
+			}
+		}
+	}
+
+	handle /topics {
+		rewrite * /.topics.html
+		header Link </topics.jsonld>;rel=meta;type="application/ld+json"
+	}
+
+	redir /topics/ /topics
+
+	rewrite /topics.jsonld /topics/index.jsonld
+
+	@topics {
+		path_regexp matcher ^/(?:topics/(?P<topic>[0-9A-Za-z_-]+))(?P<suffix>/[^/.]+)?(?:\..*|/)?$
+		not path_regexp ^/topics/index[/.]?
+	}
+
+	handle @topics {
+		handle @empty {
+			handle @bare {
+				rewrite * /.topic.html
+				header Link </topics/{re.matcher.topic}.jsonld>;rel=meta;type="application/ld+json"
+			}
+
+			handle @slash {
+				redir * /topics/{re.matcher.topic}
+			}
+
+			handle @jsonld {
+				rewrite * /topics/{re.matcher.topic}/index.jsonld
+			}
+		}
+
+		handle {
+			handle @bare {
+				rewrite * /.status.html
+				header Link </topics/{re.matcher.topic}.jsonld>;rel=meta;type="application/ld+json"
+			}
+
+			handle @slash {
+				redir * /topics/{re.matcher.topic}{re.matcher.suffix}
+			}
+		}
+	}
+
+	header Access-Control-Allow-Origin "*"
+
+	file_server {
+		index index.xml index.xhtml index.html index.rdf index.txt
+	}
+}
diff --git a/README.markdown b/README.markdown
index a0f8413..657527d 100644
--- a/README.markdown
+++ b/README.markdown
@@ -71,7 +71,9 @@ You’ll need to supply some variables there, too :—
 ## Server Configuration
 
 Your server should be configured to serve the following files from the
-  provided `PUBLIC_DIRECTORY` in response to the following requests :—
+  provided `PUBLIC_DIRECTORY` in response to the following requests.
+For people using Caddy to serve their content, a sample `Caddyfile` is
+  included in this repository.
 
 ### H·T·M·L responses