Ich habe eine einzelne Seite Anwendung - was bedeutet, dass alles auf dem Server auf eine einzige index.html
Datei umgeleitet wird, die das schwere Heben und Routing mit dem HTML5-Verlauf api (pushstate).Routing in einer einzelnen Seite Anwendung mit einer anderen Homepage
Nun, ich möchte eine neue Zielseite zur Seite hinzufügen - lass es landing.html
nennen und ich Kunden wollen zuerst landing.html
zu erhalten, wenn sie /
zugreifen und index.html
, wenn sie eine andere Route zugreifen.
Jetzt IE9 unterstützt nicht die HTML5-Verlaufs-API, so dass "Hash URLs" Pfade wie /books/authors
werden /#!/books/authors
darin. Da der Hash-Abschnitt der URL is not sent to the server so weit wie der Server betrifft, sind alle Pfade /
, was bedeutet, dass ich basierend auf dieser Logik nicht zu landing.html
oder index.html
routen kann.
Ich habe gedacht, ein Hack - Umleitung URLs mit /
zu landing.html
, #!
auf dem Client-Erkennung auf dem Server ein Cookie Hinzufügen (oder Client) genannt notReallyHomePage
und basierend auf der richtigen Seite Umleitung auf den Cookie auf dem Server . Das ist wirklich hacky und keine gute Lösung.
Was wäre der richtige Weg, um in diesem Fall mit dem Routing umzugehen?
Mein Backend ist in ASP.NET MVC, aber ich glaube nicht, dass auf die Frage relevant ist
Warum nicht die Routing-Funktionen von ASP.NET MVC verwenden. – Antony
@Antony, denn so funktionieren Anwendungen mit nur einer Seite nicht. Das Routing erfolgt auf der Client-Seite - Sie müssen also nicht auf den Server klicken, wenn der Benutzer auf einen Link klickt. Der Vorteil ist, dass die meisten Routen nur JSON vom Server (und nicht Markup) benötigen und andere den Server komplett überspringen können. –
Wahrscheinlich möchten Sie etwas wie eine Index/Container-Seite, die Ihre Routing-Logik hat. Diese Seite wird je nach gewählter Route teilweise geladen. Da Ihre Routen nicht an den Server gesendet werden, ist es nicht möglich, sofort die richtige Seite zu laden. – Cerbrus