För att svara på grundfrågan om struktur. Det man oftast uppskattar när man skriver större sidor eller system med php, är att försöka separera presentationen (html, css, js) från affärslogik (beräkningar i php). Sådan kod blir ofta lättare att underhålla och uppdatera. Ett första grundsteg är att flytta upp all php överst i filerna, så "html-delen" blir så ren som möjligt.
Vad det gäller uppslag av keywords beroende på sida, så är det en typisk funktion man i ett större system skulle använda en databas för (mysql brukar det då bli).
En sådan här konstruktion som nämndes ovan är ingen dum idé:
$page = $_GET['page'];
$sub_page = $_GET['spage'];
Det som dock är viktig att vara medveten om, är att man inte bör inkludera den nämnda filen direkt utan kontroller, eftersom illvilliga personer lätt kan ändra url:en så $page eller $sub_page får ett värde man inte räknat med. Har man ett fåtal sidor kan man göra något i stil med
$validPages = array('omoss', 'kontakt', ... );
$page = $_GET['page'];
$sub_page = $_GET['spage'];
if(in_array($page, $validPages) && file_exists("$page.php")) {
include "$page.php";
}