sup*_*ary 16 seo http-status-code-404 pushstate angularjs angular-routing
我正在使用$ 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;
});
});
Run Code Online (Sandbox Code Playgroud)
URL用于从服务器提取可能存在或不存在的内容.
如果这是一个普通的多页面网站,对丢失内容的请求将触发来自服务器的404标头响应,并且对移动内容的请求将触发301.这将提醒谷歌丢失或移动的内容.
比方说,我点击了这样一个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。然后应用程序应该相应地处理这种情况。
归档时间: |
|
查看次数: |
8096 次 |
最近记录: |