Il cliente dovrebbe comportarsi diversamente? Come?
Il cliente dovrebbe comportarsi diversamente? Come?
Risposte:
Lo stato 301 indica che la risorsa (pagina) viene spostata in modo permanente in una nuova posizione. Il client / browser non dovrebbe tentare di richiedere la posizione originale ma utilizzare la nuova posizione da ora in poi.
Lo stato 302 indica che la risorsa si trova temporaneamente altrove e il client / browser dovrebbe continuare a richiedere l'URL originale.
Quando un ragno del motore di ricerca trova 301 codice di stato nell'intestazione della risposta di una pagina Web, capisce che questa pagina Web non esiste più, cerca l'intestazione della posizione in risposta, seleziona il nuovo URL e sostituisce l'URL indicizzato con quello nuovo e trasferisce anche pagerank .
Quindi il motore di ricerca aggiorna tutto l'URL indicizzato che non esiste più (301 trovato) con il nuovo URL, questo manterrà il tuo vecchio traffico di pagine Web, pagerank e lo trasferirà a quello nuovo (non perderai il traffico della vecchia pagina Web).
Browser: se un browser rileva il codice di stato 301, memorizza nella cache la mappatura del vecchio URL con il nuovo URL, il client / browser non tenterà di richiedere la posizione originale ma utilizzerà la nuova posizione da ora in poi a meno che la cache non venga cancellata.
Quando uno spider dei motori di ricerca rileva lo stato 302 per una pagina Web, reindirizzerà temporaneamente alla nuova posizione e eseguirà la scansione di entrambe le pagine. Il vecchio URL della pagina web esiste ancora nel database del motore di ricerca e tenta sempre di richiedere la posizione precedente e di eseguirne la scansione. Il client / browser tenterà comunque di richiedere la posizione originale.
Maggiori informazioni su come implementarlo in asp.net c # e qual è l'impatto sui motori di ricerca - http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet -csharp-Implementation.html
Principalmente 301 vs 302 è importante per l'indicizzazione nei motori di ricerca, poiché i loro crawler tengono conto di ciò e trasferiscono PageRank quando usano 301.
Vedi la risposta di Peter Lee per maggiori dettagli.
301 è che alla risorsa richiesta è stato assegnato un nuovo URI permanente e qualsiasi riferimento futuro a questa risorsa dovrebbe essere fatto utilizzando uno degli URI restituiti.
302 è che la risorsa richiesta risiede temporaneamente con un URI diverso.
Poiché il reindirizzamento può essere modificato occasionalmente, il client dovrebbe continuare a utilizzare l'URI della richiesta per richieste future.
Questa risposta è memorizzabile solo se indicata da un campo di intestazione Controllo cache o Scadenza.
<?php header("location: http://example.com/new.php"); ?>
e il file new.php - <?php echo 'I am new'; ?>
e vai al link . Verrà reindirizzato e verrà visualizzato il testo "I am new". Quindi sostituire il codice in old.php <?php echo 'I am old'; ?>
e andare anche al collegamento . Vedrai il testo "Sono vecchio". Se hai eseguito il reindirizzamento 301 in old.php, avresti visto il testo "I am new" anche dopo le modifiche al codice di old.php.
webcomic.com/latest
e reindirizza a webcomic.com/some-comic-title
con un 301 il browser reindirizzerà sempre a "un titolo a fumetti". Anche quando il prossimo fumetto è stato pubblicato e "ultimo" ora reindirizza a "un altro titolo di fumetto" ... Qui è dove un 302 sarebbe meglio.
301 reindirizzamenti vengono memorizzati nella cache a tempo indeterminato (almeno da alcuni browser).
Ciò significa che, se imposti un 301, visiti quella pagina, non solo verrai reindirizzato, ma quel reindirizzamento verrà memorizzato nella cache.
Quando visiti di nuovo quella pagina, il tuo Browser * non si preoccupa nemmeno di richiedere quell'URL, ma va solo alla destinazione di reindirizzamento memorizzata nella cache.
L'unico modo per annullare un 301 per un visitatore con quel reindirizzamento nella cache è reindirizzare nuovamente all'URL originale **. In tal caso, il browser noterà il ciclo e infine richiederà davvero l'URL inserito.
Ovviamente, questa non è un'opzione se hai deciso di 301 su Facebook o qualsiasi altra risorsa che non sei completamente sotto controllo.
Sfortunatamente, molti provider di hosting offrono una funzionalità nella loro interfaccia di amministrazione semplicemente chiamata "Reindirizzamento", che esegue un reindirizzamento 301. Se lo stai usando per reindirizzare temporaneamente il tuo dominio su Facebook come una pagina in arrivo, sei praticamente fregato.
* almeno Chrome e Firefox, secondo quanto tempo i browser memorizzano nella cache gli HTTP 301? . Ho appena provato con Chrome 45. Modifica: Safari 7.0.6 su Mac memorizza anche nella cache, il riavvio del browser non ha aiutato (Link dice che su Safari 5 su Windows aiuta.)
** Ho provato javascript window.location = ''
, perché sarebbe la soluzione che potrebbe essere applicata nella maggior parte dei casi - non funziona. Si traduce in un loop infinito non rilevato. Tuttavia, php header('Location: new.url')
interrompe il ciclo
Bottom Line: usa 301s solo se sei assolutamente sicuro di non usare mai più quell'URL. Di solito mai nella directory principale (esempio.com/)
Il problema principale con 301 è che il browser memorizzerà il reindirizzamento nella cache anche se il reindirizzamento è stato disabilitato a livello di server.
È sempre meglio usare 302 se si sta abilitando il reindirizzamento per una breve finestra di manutenzione.