View Single Post
404 gir mening om man forsøker å taste inn en URL selv, og kommer til noe som ikke finnes. Etter min mening, burde en bruker *aldri* få 404 bare ved å trykke rundt på en nettside. Den statusen er forbeholdt døde lenker, spør du meg.

Løsningen mange benytter er, som nevnt over, å rewrite example.com/foo til example.com/index.php?bar=foo internt. Index.php sjekker derfra om parameterne finnes, og serverer innholdet som passer. Hvis det ikke er noe innhold, så kan du servere en feilmeldings-mal, med tekst basert på hva slags funksjon som trigget den. Typisk sjekke if isset($bar) && count_rows(db_lookup($_GET['bar'])) == 0 og så spytte ut en melding om at "Funksjonen bar fant 0 treff, <søkefelt her for å prøve igjen>".

De fleste undersidene på nettsiden følger vanligvis en eller annen mal, så det er snakk om å fylle inn den dynamiske content-biten med noe forklarende tekst. Hvis nettstedet ditt har vidt forskjellige undersider, med varierende design og eksternt innhold, så blir dette derimot litt vanskeligere å få fint.

Edit: Angående biten for å gjøre om GETen så det ikke "synes" i adressefeltet, så fikser mod_rewrite dette også. Vanligvis med en 301 internt. For eksempelet over så er det noe sånn som det her (bare fra hukommelsen, ikke testet)

Kode

Options +FollowSymLinks -MultiViews    
RewriteEngine on

RewriteCond %{THE_REQUEST} /index\.php\?s=([^&\s]+)\s [NC]
RewriteRule ^ /%1? [R=301,L,NE]

RewriteRule ^/([^/]+)/?$ index.php?s=$1 [QSA,L,NC]
Sist endret av Dyret; 20. april 2018 kl. 14:44.