Как показать посетителю перемещенную веб-страницу И вернуть код состояния ответа HTTP 301 перенаправления в Django? - PullRequest
0 голосов
/ 09 ноября 2008

Когда веб-страница переместилась в новое место, как я могу показать перемещенную веб-страницу И вернуть код состояния ответа HTTP с постоянным перенаправлением 301 в Django ?

Ответы [ 2 ]

9 голосов
/ 09 ноября 2008
   from django import http

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

браузер получит 301 и перейдет на /yournewpage.html, как и ожидалось. другой ответ технически правильный, в том смысле, что python не обрабатывает перенаправление как таковое, браузер. вот что происходит под капотом:

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 голосов
/ 09 ноября 2008

Вы не можете.

301 - это код возврата HTTP, к которому непосредственно обращается браузер. Многие сайты решают эти две проблемы, сначала отправляя пользователя на страницу перенаправления, которая сообщает пользователю об изменении, а затем через X секунд отправляет его на новую страницу. Но страница перенаправления должна иметь код 200.

Один небольшой вариант - обнаружить пауков в поисковых системах (по IP и / или пользовательскому агенту) и дать их 301. Таким образом, результаты поиска указывают на вашу новую страницу.

...