好的,我知道这是一个开放式问题,但是 -
我正在使用 AngularJS 1.4.x 和 ui-router 运行一个应用程序。在大多数情况下,一切都正常并符合预期。我的各个页面使用 ui-sref 进行导航,页面按预期显示,并且显示的 URL 看起来正确。但是,如果我在任何页面上刷新页面 (F5),就会导致出现 404 错误。并且输入 URL 不再有效。
可能涉及到的事情:
问:当您刷新页面时,实际发生了什么?
答:您正在通过浏览器向服务器发送 HTTP 请求。GET /whatever
。因此,服务器需要为此请求设置一条路由来响应index.html
。目前,您正在获得404
因为您的服务器没有与请求匹配的路由GET /whatever
.
Q: Why?
答:当您通过浏览器(而不是通过 AJAX)发出请求时,您的浏览器将尝试向您显示响应。前任。如果响应是 JSON,它会显示 JSON。如果它是一个字符串,它会显示一个字符串。如果它是一个 html 页面,它会向您显示这一点。您不能只发送回任何路线的模板,因为如果您这样做,它只会在没有其他上下文的情况下渲染该模板。你需要index.html
要加载角度,运行控制器,将模板放入其中ui-view
容器等
(将会发生的是index.html
将被发送回来,UI Router将检查路由,发出请求templateUrl
,运行控制器,然后渲染它。)
Q: How?
答:这取决于 a) 您使用的服务器类型和 b) 您的文件结构。您可能需要在路由文件的末尾提供某种捕获所有路由的服务index.html
。这就是我使用 Node/Express 的方法:
app.get('/*', function(req, res) {
var url = path.resolve(__dirname + '/../client/index.html');
res.sendFile(url, null, function(err) {
if (err) res.status(500).send(err);
else res.status(200).end();
});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)