# 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