Si presentamos algo en la pagina con ajax, el url sigue igual por eso uso el pushstate para cambiar la url, si esta url la pegamos en otra pestaña del navegador tendremos como resultado not found como es logico.
Ahora el problema es que cuando alguien quiere acceceder mediante ese link no podra.
Saludos
¿No hay ninguna URL que te muestre la información una vez cargado el AJAX de tu página inicial? Si es así es completamente lógico que te envie un 404. ¿Para que hacer un push state de un recurso inexsistente?
Lo que necesitas hacer es tener una URL que apunte al contenido cargado por el AJAX. Lo que las páginas hacen por ejemplo es:
Tienen una cabecera y un cuerpo y un archivo digamos index.php. Si cargas el archivo normalmente: index.php, te carga la cabecera y el cuerpo por default. La navegación aquí la hacen transparente usando AJAX y hacen un pushstate para el recurso que carga la información que de otra manera el AJAX estaría cargando.
Este recurso puede ser algo como: index.php?cuerpo=2. Ya las URLs las puedes reescribir como tu quieras: Index/2 o Index/Cuerpo/2 con el mod_rewrite.
En resumen: Si vas a hacer un push state, asegurate que un recurso exista, de lo contrario solo confundes al usuario.