Add documentation
This commit is contained in:
parent
c3f821caef
commit
7ad0062dee
34 changed files with 1921 additions and 0 deletions
|
|
@ -0,0 +1,2 @@
|
|||
title = "Rutingssystemet"
|
||||
summary = "Forstå hvordan PnPs mappebaserte ruting fungerer"
|
||||
98
custom/docs/utviklerdokumentasjon/forklaring/routing/page.md
Normal file
98
custom/docs/utviklerdokumentasjon/forklaring/routing/page.md
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue