Angular - UI路由器路由 - HTML5模式

时间:2014-09-10 00:44:34

标签: javascript html5 angularjs nginx routes

我正在尝试使用我的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作为我的应用服务器。我相信我必须在那个级别添加一些东西来处理它,但我不知道从哪里开始。

1 个答案:

答案 0 :(得分:3)

您遇到的问题是您的服务器不知道如何回复/product/ABC123

我目前正在使用node.js作为后端的angular,为了解决这个问题,我返回所有路由的角度应用程序,而不仅仅是通常的根路径。

所以你过去可能会使用过这样的东西:

app.get('/', ...);

哪个会返回针对根路由的角度应用。现在我用的是:

app.get('*', ...);

将返回所有路线的角度应用。


我应该已经提到过,这可以作为一个捕获所有放在其他路由之后,例如静态文件。另一种方法是标记您专门为角度应用程序所需的所有路线,例如:

app.get('/', ...); app.get('/product/:productId', ...); etc