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

前端之家收集整理的这篇文章主要介绍了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相关文章