如何区分路由 API Sails js 和 Angularjs

How to separate between routing API Sails js and Angularjs

我在 linux 环境中使用 node js (Sails) 作为后端,angularJs 作为前端,生产模式使用 nginx。我想删除 url 中的哈希 (#!)。 我按照这个教程

  1. https://www.youtube.com/watch?v=XsRugDQaGOo

现在我的网站在没有哈希 (#!) 的情况下正常工作,只要我不刷新,但当我刷新时,它从后端调用我的 API 或 404 未找到。我按照那些教程把

<base href="/"/>

在我的 layout.ejs 上,但它仍然无法正常工作。

这是我使用 state

路由 angularjs 的示例代码
(function() {
  'use strict';

  angular
  .module('buyer.routes', ['ui.router'])
  .config(function($locationProvider, $urlMatcherFactoryProvider, $urlRouterProvider, $stateProvider){
    $urlRouterProvider.otherwise("/");
    $urlMatcherFactoryProvider.caseInsensitive(true);
    $stateProvider
    .state('home', {
      url: '/',
      templateUrl: 'templates/buyer/buyer-index.html',
      controller: 'BuyerController',
      controllerAs: 'vm'
    })

    .state('home.testi', {
      url: 'testimoni',
      templateUrl: 'templates/buyer/buyer-testimoni.html',
      controller: 'BuyerTestimoniController',
      controllerAs: 'vm',
      data : { pageTitle: 'Testimoni page'}
    })

    $locationProvider.hashPrefix('');
    $locationProvider.html5Mode(true);

  })

}());

我的代码有什么问题? 谢谢

你的代码没有问题,但你需要理解这个概念。 Angular SPA 应用程序根据您正在访问的组件更改 URL。这与后端无关。在这种情况下,不会向后端发送任何请求。

但是,当您刷新浏览器时,请求被发送到后端,并且后端没有找到任何匹配此 URL 的资源,因此 returns 404。要处理此问题,您必须让您的后端能够以通用方式处理所有这些 URL。

您可以根据您的要求以不同的方式在您的后端处理这些请求。几个选项是:

  1. 刷新时,注销用户。
  2. 刷新时,重定向到基础 URL。