revision-up-to: | 11321 (1.1) |
---|
Django にはオプションとして redirects アプリケーションがついてきます。この アプリケーションを使うと、リダイレクト先をデータベースに保存し、適切なリダ イレクト処理をおこなってくれます。
redirects アプリケーションをインストールするには、以下の 3 ステップの操作を 行います:
INSTALLED_APPS
に"django.contrib.redirects"
を追加し ます。MIDDLEWARE_CLASSES
に"django.contrib.redirects.middleware.RedirectFallbackMiddleware"
を追加します。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> を参照してください。
Django の自動 admin インタフェースを有効にしていれば、 “Redirects” という名 前のセクションが admin のインデクスページに表示されているはずです。Django の他のオブジェクトと同じように編集してください。
models.
Redirect
¶リダイレクトは django/contrib/redirects/models.py で定義されている標 準の Django モデル で表現されています。 Django のデータベース API を使えば、リダイレ クトオブジェクトにアクセスできます。
Oct 26, 2017