danik.js, ну можно сделать нормальные отдельные страницы и если поддерживается history API, то аяксом выдёргивать содержимое страницы, а если не поддерживается, то переходить по этой ссылке. Например:
$('a').click(function()
{
var a = $(this).attr('href');
if(!!(window.history && history.pushState && a))
{
$('body').load(a+' body');
history.pushState(0, 0, a);
return false;
}
else document.location = a;
});