2017-09-28 1 views
0

Comme beaucoup d'autres réécritures d'URL angulaires propres, lors de l'actualisation de la page sur une URL propre comme localhost:3000/profile, j'obtiens l'erreur GET /profile 404. J'ai essayé d'utiliser une réécriture express pour envoyer le fichier index.html, mais pour autant que je sache, je n'ai pas de index.html à envoyer, car il n'est pas rendu jusqu'à la route index.js.Réécriture express pour les URL propres dans MEAN Stack Application sans index.html

J'ai essayé ce qui suit dans mon app.js:

app.all('/*', function(req, res, next) { 
    // Just send the index.html for other files to support HTML5Mode 
    res.sendFile('index.html', { root: __dirname }); 
}); 

et reçoivent Error: ENOENT: no such file or directory, stat 'C:\xampp\htdocs\healthyu\healthyu\index.html'

Ma ressemble this image here, et je peux voir il n'y a pas de fichier index.html dans le répertoire racine. J'ai essayé views/index.html, views/index.ejs, et views/index sans chance, et views/index.ejs a effectivement invité un download when I refreshed the page.

Existe-t-il un moyen d'utiliser Express pour réécrire les URL avec succès, ou aurai-je plus de succès avec un mod-rewrite dans un fichier .htaccess?

Répondre

0

Donc ce que je devais faire était de changer toutes mes demandes de serveur qui étaient des demandes de l'API à utiliser le préfixe /api, donc get /api/posts afin de réduire les conflits avec get /posts qui était l'appel API original et nom de la vue ainsi que d'autres conflits.

Mon index.html est généré dans mon fichier express routes/index.js, donc je devais juste m'assurer que j'utilisais ce fichier chaque fois que j'essayais de naviguer vers une URL différente de celle du point d'entrée. Les parties pertinentes du code ressemblaient à ce qui suit:

var index = require('./routes/index'); 
 
var users = require('./routes/users'); 
 

 
app.use('/', index); 
 
app.use('/api', index); 
 
app.use('/users', users); 
 

 
app.use("/*", index);