【问题标题】:angular html5 mode fallback for deep routes not working深度路由的角度html5模式回退不起作用
【发布时间】:2015-07-28 12:26:21
【问题描述】:

我已经在 node.js 中设置了 html5 模式,但是对于不支持 html5 模式的浏览器,回退到哈希的路由对于深度超过 1 级的路由不起作用。

服务器路由全部捕获:

app.all('/*', function(req, res) {
    console.log('serve');
    res.sendFile(__dirname+'/public/index.html');
});

我在开头的 head 标签之后包含了一个基本标签。

<base href="/">

现在当我访问像“localhost/news”这样的网址时

对于支持的浏览器,站点在相同的 url 加载,服务器被点击一次,记录 'serve',对于不支持的浏览器,它将 url 更改为 localhost/#/news,这很棒。

现在对于像 localhost/news/post1 这样的 url,支持的浏览器再次正常工作,但不支持的浏览器加载 index.html 文件,没有样式或 JS,服务器被多次访问,日志记录服务超过 50+次,URL 没有被修改,页面仍然损坏。

我正在测试的浏览器是 IE9,有谁知道这个问题的解决方案吗?

【问题讨论】:

  • 什么路由器? IE9 中的深层网址是什么样的?发生这种情况时,js 和 css 等资产的 url 会是什么样子?
  • 网址保持不变,所以如果我在 localhost/news/post-1 访问该网站,它根本不会改变 - 和 ui-router
  • 使用具有或不具有协议/域的资产的绝对路径可以解决资产问题。不确定您使用的是什么路由器或版本
  • 好的,我试试,谢谢
  • 不,我最终不得不检测 ie9 并将 rootScope 变量更改为“#”。这适用于网站内的链接,但在通过社交网络共享链接时不起作用

标签: javascript angularjs


【解决方案1】:

您是否尝试过在节点服务器中使用 express 静态设置路由?对于你的路由,在你的 server.js 中,它看起来像这样:

app.use('/news', express.static(__dirname + '/public'));

【讨论】:

    猜你喜欢
    • 2018-06-07
    • 2017-06-22
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多