Was passiert, ist, dass Ihre eckige App die Änderungen an der Adressleiste für ihre eigenen Zwecke abfängt und verhindert, dass der Browser eine HTTP-Anfrage an die neue URL sendet, also ist alles gut nachdem die App initialisiert wurde.
Wenn Sie die Seite neu laden, wird die js-App zunächst nicht geladen, daher sendet der Browser den Speicherort bei einer neuen Seitenladung an den Server. Da der Server die Routen der eckigen App nicht kennt, versucht er, mit seinem eigenen Handler zu antworten, der in diesem Fall nicht existiert.
Der einfachste Weg, um dies jetzt zu beheben, ist wahrscheinlich, ändern Sie Ihre UI-Router-Konfiguration mit einem # in der URL enthalten.
angular.module('app', ['ui.router'])
...snip
$locationProvider.html5Mode(false);
});
Das sollte mit einem # vor dem eckigen Teil der Route beginnen. Der neue Pfad wäre "/ #/sign_in". Der Browser wird wissen, dass "/" vor # an den Server gesendet werden muss, damit die Seite mit der angularen Init in int dargestellt wird, und eckig den "/ sign_in" -Teil nach dem # verarbeiten kann.