我正在尝试使用我的Angular应用程序的HTML5推送状态链接。我所拥有的是一系列类似于以下的路线
$stateProvider.state('product', {
url: '/product/:productCode',
templateUrl: 'product/product.html',
controller: 'ProductCtrl'
}
});
当我导航到[host] /#/ product / ABC123时,它会起作用 - 它会在浏览器中显示网址为/ product / ABC123,然后当我开始点击我的其他路线时(使用ui-sref)一切正常如预期的那样。
然而 - 我希望能够刷新浏览器并保持相同的状态,并且能够复制并粘贴该链接并路由到正确的状态。
例如。如果我到[主持人] /产品/ ABC123 - 我想显示#/ product / ABC123路线的内容。目前,这将给我一个未找到。
我正在使用nginx作为我的应用服务器。我相信我必须在那个级别添加一些东西来处理它,但我不知道从哪里开始。
答案 0 :(得分:3)
您遇到的问题是您的服务器不知道如何回复/product/ABC123
。
我目前正在使用node.js作为后端的angular,为了解决这个问题,我返回所有路由的角度应用程序,而不仅仅是通常的根路径。
所以你过去可能会使用过这样的东西:
app.get('/', ...);
哪个会返回针对根路由的角度应用。现在我用的是:
app.get('*', ...);
将返回所有路线的角度应用。
我应该已经提到过,这可以作为一个捕获所有放在其他路由之后,例如静态文件。另一种方法是标记您专门为角度应用程序所需的所有路线,例如:
app.get('/', ...); app.get('/product/:productId', ...); etc