Se o OP ou outros ainda estiverem procurando uma maneira de modificar o histórico do navegador para ativar o estado, usar pushState e replaceState, conforme sugerido pelo IESUS, é a maneira 'certa' de fazê-lo agora. É a principal vantagem sobre a localização. Parece que ele cria URLs reais, não apenas hashes. Se o histórico do navegador usando hashes for salvo e revisado novamente com o javascript desativado, o aplicativo não funcionará, pois os hashes não são enviados ao servidor. No entanto, se o pushState tiver sido usado, a rota inteira será enviada ao servidor, que você poderá criar para responder adequadamente às rotas. Eu vi um exemplo em que os mesmos modelos de bigode foram usados no servidor e no lado do cliente. Se o cliente tivesse o javascript ativado, ele obteria respostas rápidas, evitando a ida e volta ao servidor, mas o aplicativo funcionaria perfeitamente sem o javascript. Assim, o aplicativo pode degradar-se normalmente na ausência de javascript.
Além disso, acredito que exista alguma estrutura por aí, com um nome como history.js. Para navegadores que suportam HTML5, ele usa pushState, mas se o navegador não suportar, ele automaticamente volta a usar hashes.