【发布时间】: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