角度URL路由问题

时间:2016-10-02 22:30:18

标签: angularjs url routing

所以我需要更改我的网址,以便Google Analytics可以跟踪它。 Google Analytics不会在链接中使用“/#/”(哈希)接受它。也就是说,我使用了Angular的locationProvider并修改了我的应用程序路由:

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.2/lodash.min.js"></script>

我的网址很好,并将其更改为http://website.com/steps而不是http://website.com/#/steps。但是,现在,如果用户刷新(f5)链接,则会抛出404错误而不确定原因。此外,当刷新被称为“http://website/steps#/steps”时,似乎以某种方式将其作为URL注入。

有关于此的任何想法吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

问题可能出在服务器端。您必须配置服务器,以便它使用您的html文件响应每个请求。例如在express:

var app = require('express')();

app.configure(function(){
  // static - all our js, css, images, etc go into the assets path
  app.use('/assets', express.static('/assets'));

  app.get('/api/users/:id', function(req, res){
    // return data for user....
  });

  // This route deals enables HTML5Mode by forwarding missing files to the index.html
  app.all('/*', function(req, res) {
    res.sendfile('index.html');
  });
});

当您重新加载页面时,请求会转到应用程序的服务器端,并尝试解析该URL,但它可能无法解决,因为这些路由只存在于应用程序的客户端。 / p>

最好在每个服务器端路由前加一个/api路由前缀,这样您就可以轻松区分客户端和服务器端路由。