Django v1.0 documentation

redirects アプリケーション

revision-up-to:8961 (1.0)

Django にはオプションとして redirects アプリケーションがついてきます。この アプリケーションを使うと、リダイレクト先をデータベースに保存し、適切なリダ イレクト処理をおこなってくれます。

インストール

redirects アプリケーションをインストールするには、以下の 3 ステップの操作を 行います:

  1. INSTALLED_APPS"django.contrib.redirects" を追加し ます。
  2. MIDDLEWARE_CLASSES"django.contrib.redirects.middleware.RedirectFallbackMiddleware" を追加します。
  3. manage.py syncdb を実行します。

動作の仕組み

manage.py syncdb を実行すると、データベースに django_redirects とい う名のテーブルを作成します。このテーブルは site_id, old_path および new_path というフィールドを持った検索テーブルです。

全ての処理は RedirectFallbackMiddleware で行われます。 Django アプリケー ション内で 404 エラーが送出されると、このミドルウェアは最後の手段として redirects データベースにリクエスト URL がないか調べます。特に、 SITE_ID に対応するサイト ID を持った old_path を探します。

  • 一致するエントリが見つかり、かつ new_path が空でなければ new_path にリダイレクトします。
  • 一致するエントリは見つかったが new_path が空の場合には、 410 (“Gone”) HTTP ヘッダと空の (コンテンツのない) 応答を送信します。
  • 一致するエントリがなければ、リクエストを通常通りに処理します。

ミドルウェアが起動されるのは 404 エラーに対してだけで、 500 やその他の状態 コードでは起動されません。

MIDDLEWARE_CLASSES の設定順には注意が必要です。一般に、 RedirectFallbackMiddleware はリクエスト処理の最終手段なので、リストの末 尾に指定します。

ミドルウェアについての詳しい情報は ミドルウェアのドキュメント <topics-http-middleware> を参照してください。

リダイレクトの追加、変更、削除

admin インタフェースから

Django の自動 admin インタフェースを有効にしていれば、 “Redirects” という名 前のセクションが admin のインデクスページに表示されているはずです。Django の他のオブジェクトと同じように編集してください。

Python API から

class models.Redirect
リダイレクトは django/contrib/redirects/models.py で定義されている標 準の Django モデル で表現されています。 Django のデータベース API を使えば、リダイレ クトオブジェクトにアクセスできます。