Knockout.js はブラウザの履歴に対応していません。対応するには他のライブラリと組み合わせる必要があります。組み合わせるライブラリは、Knockout.js のチュートリアル Single page applications で使ってある Sammy が有力。なにせ、公式のチュートリアルで使っているくらいですからね。 Sinatra ライクな JavaScript フレームワーク『Sammy.js』 - present Knockout.js と Sammy を使って、画面切り替え&ブラウザ履歴対応を実現する方法は次の通り。 ビュー(HTML)の中に複数のサブ画面を記述。 ビューに記述したサブ画面に対応するプロパティ*1をビューモデルに用意。 Sammyのルートで、表示したいサブ画面にバインドしているプロパティに、データをセット。 表示したくないサブ画面にバインドしているプロパティ