Corriger les erreurs 404 sournoises

Les applications monopages peuvent afficher un contenu différent sans charger de nouvelle page. À faire Ils utilisent donc des gestionnaires de clics sur les liens et l'API History. L'onglet Historique de l'API Monitoring permet de manipuler l'historique des sessions du navigateur. De cette façon, nous pouvons mettre à jour l'URL lorsque affichant une autre page (généralement appelée "vue" dans les applications monopages). Il y a aussi s'assure que le bouton Retour du navigateur fonctionne toujours comme prévu.

Intéressons-nous à l'application monopage dans cet atelier de programmation. Elle montre un chat ou un chien. et fournit des liens pour passer d'un animal à l'autre. Cela semble fonctionner Très bien !

Découverte de l'erreur 404 sournoise

Malheureusement, l'application comporte un petit bug. Voyons ça de plus près.

  • Pour prévisualiser le site, appuyez sur Afficher l'application. Appuyez ensuite sur Plein écran plein écran
  • Cliquez sur le lien Doggos. Notez comment l'URL a changé.
  • Actualisez l'application.

Vous obtenez une page contenant "Cannot GET /doggos" une erreur 404 sournoise. Elle est "sournoise", car l'application Web semble fonctionner bien tant que vous ne cliquez que sur les liens dans Elle ne fonctionne plus lors de l'utilisation des URL dans une nouvelle fenêtre du navigateur ou lors de l'actualisation de la . Le problème est que le serveur ne sait pas comment répondre à une demande de ces URL. Le code JavaScript de notre application Web utilise l'API History pour naviguer entre eux, mais le serveur ne sait pas quoi en faire. Chaque fois que le serveur ne sait pas quoi faire pour une URL demandée, il répond avec le code d'état HTTP 404. Ce code indique au serveur qu'il n'a pas trouvé pour l'URL demandée.

Dans ce cas, les moteurs de recherche n'indexeront pas les URL, car un utilisateur cliquerait sur un résultat de recherche et trouvent le message d'erreur, mais pas le contenu que vous recherchez, comme les photos de chiens.

Réparer le serveur

Ce projet utilise un serveur express.js écrit en JavaScript. Résolvons le serveur de sorte qu'il réponde avec index.html et l'appel de fichier de Google s'occupe du reste.

  • Cliquez sur Remix to Edit (Remixer pour modifier) pour pouvoir modifier le projet.
  • Sélectionnez le fichier server.js.

Ce fichier contient le code du serveur. Il configure un serveur express.js et envoie le contenu du fichier index.html. La route configurée à la ligne 15 ne diffuse que l'application Web lorsque les requêtes sont dirigées vers l'URL /. Le serveur doit également afficher les autres URL que vous avez créés. Modifions-le pour diffuser toutes les URL, de sorte qu'il fonctionne aussi avec d'autres URL à l'avenir.

Pour ce faire, nous pouvons remplacer le code de la ligne 15 par le code suivant:

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

/* correspond à n'importe quelle URL, et le serveur répond désormais avec l'application Web dans index.html pour une URL donnée.

  • Pour prévisualiser le site, appuyez sur Afficher l'application. Appuyez ensuite sur Plein écran plein écran

L'actualisation et l'ouverture des liens dans une nouvelle fenêtre de navigation privée devraient désormais fonctionner comme comme prévu.