Con php puede ser una forma..
index.php
Código PHP:
Ver original<?php
$opcion=$_GET["opcion"]; //obtenemos por GET la variable opcion que declaramos mas adelante en los enlaces
switch($opcion){
case "home": //cuando el valor de la "opcion" sea "home"...
$contenido="home.php"; //ruta del contenido (si esta dentro de la carpeta "php" seria "php/home.php")
$titulo="Home"; //titulo que aparece en la pestaña del navegador
break;
case "pagina1":
$contenido="pagina1.php";
$titulo="Pagina 1";
break;
case "pagina2":
$contenido="pagina2.php";
$titulo="Pagina 2";
break;
default:
$contenido="home.php";
$titulo="Home";
break;
}
?>
<!DOCTYPE html>
<html>
<head>
<title><?php echo $titulo; ?></title>
</head>
<body>
<ul>
<li><a href="?opcion=home">Home</a></li>
<li><a href="?opcion=pagina1">Pagina 1</a></li>
<li><a href="?opcion=pagina2">Pagina 2</a></li>
</ul>
<?php
/*el signo de interrogacion "?" hace referencia a que es una variable de opcion, puede ser cualquier cosa solo puse "opcion" para que sea mas facil de entender, podria ser "?op=". Y lo que va despues del igual es el valor que le asignas a esa opcion, que va a cambiar con el switch que usamos arriba */
?>
<div>
<?php include($contenido);?>
</div>
</body>
</html>
Muchos los hacen con javascript, sinceramente no se cuál es mejor forma, cuáles son las ventajas y desventajas de cada uno.. yo te muestro esta forma, si no te convence espera mas respuestas :P
Saludos