2008-11-09 13 views

Répondre

8
from django import http 

    return http.HttpResponsePermanentRedirect('/yournewpage.html') 

le navigateur obtenir le 301, et aller à /yournewpage.html comme prévu. l'autre réponse est techniquement correcte, en ce que python ne gère pas la redirection en soi, le navigateur est. c'est ce qui se passe sous le capot:

Browser    Python   HTTP 
    ------------------->   GET /youroldpage.html HTTP/1.1 

    <-------------------   HTTP/1.1 301 Moved Permanently 
            Location: /yournewpage.html 
    ------------------->   GET /yournewpage.html HTTP/1.1 
3

Vous ne pouvez pas.

301 est un code de retour HTTP directement géré par le navigateur. De nombreux sites traitent ces deux problèmes en envoyant d'abord l'utilisateur à une page de redirection qui informe l'utilisateur de la modification, puis X secondes plus tard les envoie à la nouvelle page. Mais la page de redirection doit avoir un code 200.

Une petite variante est de détecter les araignées des moteurs de recherche (par IP et/ou agent utilisateur) et de donner les les 301. De cette façon, les résultats de recherche pointent vers votre nouvelle page.

+0

Vous pouvez réellement retourner une page HTML dans une redirection 301 ou autre. Il sera rendu par les user-agents trop vieux pour comprendre le résultat - c'est-à-dire les navigateurs HTTP/0.9, qui n'existent pratiquement plus. – bobince

+0

Je ne le savais pas! Bien sûr, je ne me préoccupe pas des navigateurs aussi vieux, mais quand même, c'est intéressant. –