I am building a fully jquery powered website, so i am loading all pages dynamically using ajax to achieve fancy transitions between pages and maximize user experience. Here is
Complementing the @Quentin's answer, you need to identify in the PHP if the content is being loaded via ajax or not. If it isn't, you have to display the full content of the page being requested, including header, footer and the content of the page.
pushState
lets you change the local part of the URI when you update the page contents with Ajax.
For every URI you create that way, allow the server to build the same page without any dependency on JavaScript.
This will: