Javascript 链接在角度应用程序中工作,但在地址栏中不工作

Javascript 链接在角度应用程序中工作,但在地址栏中不工作,javascript,angularjs,Javascript,Angularjs,如果我在地址栏中键入website.com/about-us/,它会断开 显示“未找到”,而不是加载页面 如果我键入website.com/#/地址栏中的“关于我们”会转到右侧页面。//添加了hashbang或# 如果我点击网页上的一个链接到website.com/about-us/(没有hashbang),它就可以工作了。我如何修复它,这样我就可以直接访问该网站,而不必从地址栏发出哈希爆炸 $locationProvider.html5Mode(true); 更新 这是我的服务器配置 a

如果我在地址栏中键入website.com/about-us/,它会断开

  • 显示“未找到”,而不是加载页面
如果我键入website.com/#/地址栏中的“关于我们”会转到右侧页面。//添加了hashbang或#

如果我点击网页上的一个链接到website.com/about-us/(没有hashbang),它就可以工作了。我如何修复它,这样我就可以直接访问该网站,而不必从地址栏发出哈希爆炸

$locationProvider.html5Mode(true);
更新 这是我的服务器配置

app.route('/').get(index.render); // UPDATE: This is why the home page was loading and I could click links

app.get('/.\*', function (req, res, next) {

    if(req.url.substring(0,4) === "/api") {
      return next();
    } else {
    res.send(index.render) // render is a function in the index controller

    }

});
TL;DR:linkclicks按预期工作,因为您的JavaScript已经加载 由于您使用的是UI路由器,Angular会“告诉”链接单击转到适当的hashbang路由,除非您使用
$locationProvider.html5Mode(true),你是谁。因此,在本例中,单击“知道”链接以使用
html5Mode
,因为页面中的JavaScript已经加载

当您手动在地址栏中输入链接时,JavaScript没有机会加载,因此它无法“知道”将适当的非hashbang路由映射到应用程序中的正确视图

要获得所需的行为,您需要将服务器配置为正确路由:

app.get('/some-page', doStuff);

您没有显示或提到您正在使用的服务器,但它包含未正确配置为HTML5模式的服务器的所有签名。看,谢谢!我会用我的快速配置更新我的问题谢谢Josh!这是否意味着我需要为我所有的angular应用程序页面提供快速路线?在这之前我一直在使用$stateProvider@Zeus,没问题!如果您希望能够直接通过URL栏导航到一个非散列路由,那么是的,您将需要所有这些路由的快速路由。为什么您不想使用
#?这其实是一个非常优雅的方式。问得好,乔希。我向heroku服务器运行了一个新的git推送,npm安装更新了我的所有依赖项。散列爆炸之后,我的URL中出现了一个问号,我只是想让一切重新加速。@Zeus,哈哈,我现在迷路了(一定是把自己弄糊涂了…)。那么你的问题解决了吗?