我正在使用$ 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。应用程序应该相应地处理这种情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。