Jika OP atau orang lain masih mencari cara untuk melakukan modifikasi riwayat browser untuk mengaktifkan keadaan, menggunakan pushState dan replaceState, seperti yang disarankan oleh IESUS, adalah cara yang 'tepat' untuk melakukannya sekarang. Ini keuntungan utama daripada location.hash tampaknya menciptakan url yang sebenarnya, bukan hanya hash. Jika riwayat browser menggunakan hash disimpan, dan kemudian ditinjau kembali dengan javascript dinonaktifkan, aplikasi tidak akan berfungsi, karena hash tidak dikirim ke server. Namun, jika pushState telah digunakan, seluruh rute akan dikirim ke server, yang kemudian dapat Anda bangun untuk merespons rute-rute tersebut dengan tepat. Saya melihat contoh di mana template kumis yang sama digunakan pada server dan sisi klien. Jika klien mengaktifkan javascript, ia akan mendapatkan respons cepat dengan menghindari bolak-balik ke server, tetapi aplikasi akan bekerja dengan baik tanpa javascript. Dengan demikian, aplikasi dapat dengan anggun menurunkan tanpa adanya javascript.
Juga, saya percaya ada beberapa kerangka kerja di luar sana, dengan nama seperti history.js. Untuk peramban yang mendukung HTML5, ia menggunakan pushState, tetapi jika peramban tidak mendukung itu, ia secara otomatis kembali menggunakan hash.