Podés hacerlo con un PHP bastante rudimentario y simple y cargar la plantilla deseada según el contenido que envíes por variables. Si no tenés idea de programación, puede llegar a ser algo complejo.
Básicamente necesitás usar un archivo con extensión .php y que tus links siempre vayan al mismo sitio cambiando solamente la variable que envían. Ejemplo:
Código HTML:
<ul>
<li><a href="index.php?seccion=home">Home</a></li>
<li><a href="index.php?seccion=nosotros">Nosotros</a></li>
<li><a href="index.php?seccion=contacto">Contacto</a></li>
</ul>
De esta manera, siempre vas a estar dentro del mismo archivo (index.php). A continuación, lo que necesitás hacer es levantar el valor de esa variable sección (o como le hayas puesto).
Código PHP:
$seccion = $_GET['seccion'}; // home, nosotros, contacto
Y de acuerdo al valor recibido, cargar la plantilla que corresponda:
Código PHP:
<div id="main">
switch($seccion) {
case 'home' : include('home.php'); break;
case 'nosotros': include('nosotros.php'); break;
case 'contacto': include('contacto.php'); break;
default: include('home.php'); // Una plantilla a incluir por defecto
}
</div>
De esta manera vas a poder cargar tu main dinámicamente. Es un ejemplo simple y tosco pero que sirve para que te des una idea.
Saludos