Angular+Express路由跳转的页面成功,刷新后not found?
发布于 8 年前 作者 TheSixth 6632 次浏览 来自 问答

untitled4.pnguntitled5.png通过angular路由调用express router实现跳转,正常如下图,能显示controller中定义的值 untitled3.png 但是刷新网页就变成如下图 untitled1.png 个人觉得是刷新请求了express的路由 而不是angular ,新手求大神指教

4 回复

需要弄个 server side rewrite。大概意思是当你刷新页面之后 浏览器会发一个 请求 到 /wel这个 route ,这时后台重新 load 一遍你的 index.html 和其他所有的js, hmtl, css。然后angular 重新load 重新 bootstrap, 再根据你当前的url /wel 重新load你的 template,controller

var express = require('express');
var app = express();

app.use('/js', express.static(__dirname + '/js'));
app.use('/dist', express.static(__dirname + '/../dist'));
app.use('/css', express.static(__dirname + '/css'));
app.use('/partials', express.static(__dirname + '/partials'));

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

app.listen(3006); //the port you want to us

关键词: history api fallback

@qitang 多谢啦 你的方法我学到了 不过我试过会报错 而且浏览器崩溃 我原来代码中加了// $locationProvider.html5Mode(true); 我注释之后 在链接中加上 “#/” 问题就解决了 但是如果以后想要去掉链接中的# 那问题依然还是在的 你的回复让我觉得还是要加强自己项目流程中的逻辑思维 再次感谢

@Kaijun 虽然我这里用不到 不过也学到了一个新的技能 多谢多谢

回到顶部