iterate / mikrobloggeriet

0 stars 0 forks source link

Legge til route til feed uten "trailing slash" #34

Closed jraregris closed 6 months ago

jraregris commented 10 months ago

Slik at vi kan bruke både https://mikrobloggeriet.no/feed/ og https://mikrobloggeriet.no/feed.

teodorlu commented 8 months ago

Motivasjonen min for å ha / på slutten av alle ruter fra starten var å kunne eksportere hele mikrobloggeriet som statiske filer, lage index.html alle steder der det trengs, så "bare funker det". Jeg gikk for "bruk mapper alltid" så man kan lagre flere filer sammen med filen som produseres. På andre nettsider har jeg typisk lagret en index.org eller en index.md i samme mappe som generert index.html. Så har jeg bare brukt den konvensjonen.

Usikker på om det gir like mye mening for rss-filer (xml). Hvis man putter index.xml in en mappe og server opp med Nginx, hva skjer da hvis man spør etter /? Gir den innholdet i index.xml og setter content-type til application/xml da? Eller gjør den noe annet?

Jeg tenker i alle fall at en god ting å gjøre med XML-filen er:

  1. Lenke funker med server
  2. Lenke funker hvis man dumper alt til filer
  3. (eventuelt også, litt mindre viktig): lenke funker internt i kildekode / med Github.

Der har du i alle fall motivasjonen å alltid ha / på slutten av paths:

  1. Lenker funker på serveren
  2. Lenker funker i markdown-kildekode -- hvis man lenker til /olorm/olorm-13/ i github, kommer man til rett mappe
  3. og lenker kan fortsette å funke hvis man vil droppe serveren, og heller eksportere filene én siste gang til HTML, og serve opp de filene fra feks Cloudflare CDN eller Github pages.
teodorlu commented 6 months ago

Diskuterte såvidt med @olavm i dag. Kortversjon:

  1. Dagens løsning er ikke ideell
  2. Skal vi støtte dette for alle url-er med dagens url-routing gir en del støy i dagens router (bruker Compojure)
  3. Med Reitit (eller en annen data-dreven ruter) kan vi kanskje få løst dette bedre.

Reitit: https://github.com/metosin/reitit

teodorlu commented 5 months ago

Vi støtter nå med og uten / i prod via reitit.ring/redirect-trailing-slash-handler for alle paths. Routeren legger på eller fjerner trailing /, og redirecter til riktig path.

I prod per https://github.com/iterate/mikrobloggeriet/commit/bbfa04f4b7d8de91ccd348e634d42505f01fb1a6.

Eksempler:

$ curl -I https://mikrobloggeriet.no/feed          
HTTP/2 308 
date: Tue, 30 Jan 2024 20:59:03 GMT
content-length: 0
location: /feed/
strict-transport-security: max-age=15724800; includeSubDomains

$ curl -I https://mikrobloggeriet.no/olorm/olorm-13
HTTP/2 308 
date: Tue, 30 Jan 2024 20:59:07 GMT
content-length: 0
location: /olorm/olorm-13/
strict-transport-security: max-age=15724800; includeSubDomains