I $ routeProvider und $ locationProvider bin mit pushstate URLS auf einer einzigen Seite app (SPA) zu handhaben, so etwas wie:Wie kann ich einen echten 404 oder 301 mit einer Winkelpushstate URL werfen
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;
});
});
Die URL wird verwendet, um Inhalte vom Server abzurufen, die möglicherweise nicht vorhanden sind.
Wenn dies eine normale mehrseitige Website war, würde eine Anforderung für fehlenden Inhalt eine 404-Headerantwort vom Server auslösen und eine Anforderung für verschobenen Inhalt würde eine 301 auslösen. Dies würde Google auf den fehlenden oder verschobenen Inhalt hinweisen.
Sagen Sie zum Beispiel traf ich eine URL wie folgt aus:
http://example.com/pet/123456
und sagen, dass es in der Datenbank, wie kann mein SPA eine 404 auf, dass der Inhalt nicht so Haustier.
Fehlt dies, gibt es eine andere Möglichkeit, den Benutzer oder die Suchmaschine korrekt zu warnen, dass die angeforderte URL nicht existiert? Gibt es eine andere Lösung, die ich nicht in Betracht ziehe?
Wenn der Server einen Statuscode außerhalb des Bereichs 200 zurückgibt, sollte der Aufruf "get" zurückweisen und an den Fehler "callback" übergeben werden: '.success (cb) .error (cb)'. Ist das wonach Sie suchen? –
@DavinTryon - nicht wirklich, ich kann die 404 von der AJAX Anfrage kein Problem, die Frage ist, was damit zu tun ist. In einer mehrseitigen App würde ich einen 404-Statuscode im Antwortheader zurückgeben. Natürlich kann ich das in einem SPA nicht machen. Für einen Benutzer kann ich einfach einen schönen 404 Text rendern, aber wie warne ich einen Crawler, dass die Seite nicht da ist. – superluminary
Ich denke, die Frage könnte dann auf jeden AJAX-Anruf erweitert werden? Mit anderen Worten, wie wird einem Crawler angezeigt, dass ein AJAX-Aufruf (der den zu rendernden Inhalt zurückgibt) einen 404 zurückgibt? –