Add documentation

This commit is contained in:
Ruben 2025-10-03 12:30:04 +02:00
parent c3f821caef
commit 7ad0062dee
34 changed files with 1921 additions and 0 deletions

View file

@ -0,0 +1,98 @@
# Forstå ruting i PnP
PnP bruker et enkelt, intuitivt mappebasert rutingssystem som kobler mapper direkte til URL-er.
## Filosofien
Tradisjonelle webrammeverk krever at du definerer ruter i konfigurasjonsfiler. PnP tar en annen tilnærming: **mappestrukturen ER rutekonfigurasjonen din**.
Dette designvalget prioriterer:
- **Enkelhet**: Ingen rutdefinisjoner å vedlikeholde
- **Forutsigbarhet**: URL-er matcher mappestrukturen nøyaktig
- **Vedlikeholdbarhet**: Lett å forstå selv år senere
## Hvordan det fungerer
### URL til fil-mapping
Når en forespørsel kommer inn, følger ruteren denne logikken:
1. **Nøyaktig filmatch**: Hvis `/content/om.html` eksisterer, server den
2. **Mappe med sidefil**: Hvis `/content/om/` inneholder `page.md`, server den
3. **Mappe med enkeltfil**: Hvis `/content/blogg/innlegg/` inneholder `article.md`, server den
4. **Mappelisting**: Hvis `/content/blogg/` inneholder undermapper, list dem
### Skråstrek-atferd
PnP omdirigerer automatisk mappebaserte sider til å inkludere skråstrek på slutten:
- `/blogg/mitt-innlegg``/blogg/mitt-innlegg/` (301 redirect)
Dette sikrer at relative stier i markdown fungerer korrekt (bilder, lenker, etc).
## Filprioritet
Når PnP ser etter innhold i en mappe, søker den etter filer i denne rekkefølgen:
### For enkle sider (artikler, innlegg):
1. `single.php`
2. `single.html`
3. `single.md`
4. `post.php`
5. `post.html`
6. `post.md`
7. `article.php`
8. `article.html`
9. `article.md`
### For overordnede sider:
1. `page.php`
2. `page.html`
3. `page.md`
## Språkvariasjoner
PnP støtter flerspråklige sider. For språk som ikke er standardspråket, søker ruteren etter språkspesifikke filer først:
```
page.en.md → Engelsk versjon
page.md → Norsk versjon (standard)
```
URL-strukturen blir:
```
/om/ → Norsk (standard)
/en/about/ → Engelsk
```
## Egendefinerte indekssider
Du kan overstyre standard mappelisting ved å lage en `index.php`-fil i en hvilken som helst mappe.
## Mappenavn med datoer
PnP trekker automatisk ut datoer fra mappenavn:
```
/content/blogg/2025-01-15-mitt-innlegg/
```
Datoen formateres automatisk til norsk format: "15. januar 2025"
## Hvorfor denne tilnærmingen?
Dette rutingssystemet vil fungere i flere tiår fordi:
- Ingen komplekse avhengigheter
- Ingen rutdefinisjoner som blir utdaterte
- Filsystemoperasjoner er standardiserte og stabile
- Enkelt å migrere eller ta backup (bare kopier mapper)
- Ingen abstraksjoner som skjuler underliggende struktur
- Ingen kompilering eller cache-generering nødvendig
## Sikkerhet
Ruteren validerer alle stier for å forhindre directory traversal-angrep:
- Filer må være innenfor document root
- Realpaths sjekkes mot contentDir
- Kun godkjente filtyper serveres