Risolvere i problemi 404 non ammessi

Le app a pagina singola possono mostrare contenuti diversi senza caricare una nuova pagina. Da fare quindi usano i gestori dei clic sui link e l'API History. La storia API consente di modificare la cronologia delle sessioni del browser. In questo modo possiamo aggiornare l'URL quando mostrare una pagina diversa (solitamente chiamata "visualizzazione" nelle app a pagina singola). Inoltre, assicura che il pulsante Indietro del browser funzioni ancora come previsto.

Dai un'occhiata all'app a pagina singola in questo codelab. Mostra gatto o cane immagini e fornisce link per passare da un animale all'altro. Sembra funzionare va bene!

Scoprire l'errore 404

Purtroppo c'è un piccolo bug nell'app. Diamo un'occhiata!

  • Per visualizzare l'anteprima del sito, premi Visualizza app. Quindi premi Schermo intero schermo intero.
  • Fai clic sul link Doggos. Osserva come è cambiato l'URL.
  • Ricarica l'app.

Viene visualizzata una pagina con "Cannot GET /doggos" un errore 404. È "furtivo", perché l'app web sembra funzionare, purché tu faccia clic solo sui link che li annotino. Si interrompe quando si utilizzano gli URL in una nuova finestra del browser o quando si aggiorna . Il problema è che il server non sa come rispondere a una richiesta di a questi URL. Il codice JavaScript nella nostra applicazione web utilizza l'API History per passare da uno all'altro, ma il server non sa cosa fare. Ogni volta che il server non sa cosa fare per un URL richiesto, risponde con il codice di stato HTTP 404. Con questo codice il server comunica di non aver trovato per l'URL richiesto.

In questo caso, i motori di ricerca non indicizzano gli URL, perché l'utente farebbe clic su su un risultato di ricerca e trovare il messaggio di errore, ma non i contenuti cercando, come le foto del cane.

Correggere il server

Questo progetto utilizza un server express.js scritto in JavaScript. Sistemiamo il server, in modo che risponda con index.html e il singolo l'app della pagina si occuperà del resto.

  • Fai clic su Remixa per modificare per rendere modificabile il progetto.
  • Seleziona il file server.js.

Questo file contiene il codice del server. Configura un server express.js e invia il contenuto di index.html. La configurazione del percorso nella linea 15 gestisce solo l'app web quando le richieste raggiungono l'URL /. Il server dovrebbe pubblicare anche gli altri URL che hai creato. Modifichiamo questo valore in modo che venga pubblicato tutti gli URL, in modo che funzioni anche con altri URL in futuro.

Per farlo, possiamo modificare il codice a partire dalla riga 15 in questo modo:

app.get('/*', function(request, response) {
  response.sendFile(__dirname + '/views/index.html');
});

/* corrisponde a qualsiasi URL e il server ora risponde con l'app web in index.html per qualsiasi URL.

  • Per visualizzare l'anteprima del sito, premi Visualizza app. Quindi premi Schermo intero schermo intero.

L'aggiornamento e l'apertura dei link in una nuova finestra di navigazione in incognito dovrebbero ora funzionare previsto.