Ho un'applicazione a pagina singola - il che significa che tutto sul server viene reindirizzato a un singolo file index.html
che esegue il sollevamento e il routing pesanti utilizzando l'API della cronologia HTML5 (pushstate).Instradamento in un'applicazione a pagina singola con un'altra pagina iniziale
Ora, voglio aggiungere una nuova pagina di destinazione al lato - chiamiamolo landing.html
e voglio i clienti a raggiungere landing.html
prima quando accedono /
e index.html
se accedono qualsiasi altro percorso.
Ora IE9 non supporta l'API di cronologia HTML5, quindi utilizzando "URL hash" percorsi come /books/authors
diventano /#!/books/authors
in esso. Poiché la sezione hash dell'URL is not sent to the server per quanto riguarda il server, tutti i percorsi sono /
che significa che non è possibile instradare a landing.html
o index.html
in base a tale logica.
Ho pensato a un hack - URL reindirizzamento con /
a landing.html
, rilevando #!
sul client, l'aggiunta di un cookie sul server (o client) chiamato notReallyHomePage
e riorientare alla pagina corretta in base al cookie sul server . Questo è veramente hacky e non è una buona soluzione.
Quale sarebbe il modo corretto per gestire il routing in questo caso?
mio backend è in ASP.NET MVC, ma non credo che sia rilevante per la questione
perché non utilizzare le funzionalità di routing fornite da ASP.NET MVC. – Antony
@Antony perché non è così che funzionano le applicazioni a pagina singola. Il routing avviene sul lato client, quindi non è necessario colpire il server quando l'utente fa clic su un collegamento. Il vantaggio è che la maggior parte dei percorsi richiede solo JSON dal server (e non il markup) e altri possono ignorare del tutto il server. –
Probabilmente vuoi qualcosa come una pagina indice/contenitore che abbia la tua logica di routing. Quella pagina viene caricata in partial a seconda della rotta scelta. Dal momento che le tue rotte non vengono inviate al server, non penso sia possibile caricare immediatamente la pagina corretta. – Cerbrus