0

Web ページが新しい場所に移動したときに、移動した Web ページを表示し、 Djangoで 301 パーマネント リダイレクト HTTP 応答ステータス コードを返すにはどうすればよいですか?

4

2 に答える 2

9
   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
于 2008-11-09T19:13:21.360 に答える
3

できません。

301 は、ブラウザによって直接処理される HTTP リターン コードです。多くのサイトは、最初にユーザーに変更を知らせるリダイレクト ページにユーザーを送信し、X 秒後に新しいページにユーザーを送信することで、これら 2 つの問題を処理します。ただし、redirect-er ページには 200 コードが必要です。

小さなバリエーションの 1 つは、検索エンジンのスパイダーを (IP および/またはユーザー エージェントによって) 検出し、301 を与えることです。これにより、検索結果が新しいページを指します。

于 2008-11-09T19:08:06.147 に答える