angularjs – 如何用角度的pushstate URL抛出一个真正的404或301

我正在使用$ routeProvider和$ locationProvider在单一页面应用程序(SPA)中处理pushstate URLS,如下所示:
angular.module('pets',[])

  .config(function($routeProvider,$locationProvider) {
    $locationProvider.html5Mode(true);
    $routeProvider.when('/pet/:petId',{
      controller: 'petController'
    });
  })

  .controller('petController',function($scope,petService,$routeParams){
    petService.get('/api/pets/' + $routeParams.petId).success(function(data) {
      $scope.pet = data;
    });
  });

该URL用于从可能存在或可能不存在的服务器中拉取内容

如果这是一个普通的多页网站,那么对于缺少内容的请求将触发服务器的404标头响应,并且移动内容的请求将触发301.这将提醒Google丢失或移动的内容

比方说我点击这样的URL:

http://example.com/pet/123456

并说数据库中没有这样的宠物,我的SPA如何可以返回404内容

否则,是否有其他方法正确地提醒用户搜索引擎所请求的URL不存在?有没有其他解决方案我没有考虑?

真正的问题是http://example.com/pet/123456是否返回任何东西?

如果您的起点为http://example.com/,并且有一个指向http://example.com/pet/123456的链接,那么Angular将会调用petController,该控件将进行AJAX调用http://example.com / API / PET / 123456。

检索器不会这样做,而是直接尝试调用http://example.com/pet/123456。

所以您的服务器必须能够处理该调用。如果没有id 123456的宠物,那么它应该返回404.问题解决了。如果有的话应该返回SPA。应用程序应该相应地处理这种情况。

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...