---
title: "Aplikasi pengalihan"
version: 1.11
locale: id
source: https://docs.djangoproject.com/id/1.11/ref/contrib/redirects/
canonical: https://djangodocs.dev/id/1.11/ref/contrib/redirects/
---
# Aplikasi pengalihan

Django comes with an optional redirects application. It lets you store simple
redirects in a database and handles the redirecting for you. It uses the HTTP
response status code `301 Moved Permanently` by default.

## Pemasangan

Untuk memasang aplikasi pengalihan, ikuti langkah-langkah ini:

1. Pastikan bahwa kerangka kerja `django.contrib.sites` [is installed](/id/1.11/ref/contrib/sites/#enabling-the-sites-framework).
2. Tambah pengaturan `'django.contrib.redirects'` to your [`INSTALLED_APPS`](/id/1.11/ref/settings/#std-setting-INSTALLED_APPS).
3. Tambah `'django.contrib.redirects.middleware.RedirectFallbackMiddleware'` ke pengaturan [`MIDDLEWARE`](/id/1.11/ref/settings/#std-setting-MIDDLEWARE) anda.
4. Jalankan perintah [`manage.py migrate`](/id/1.11/ref/django-admin/#django-admin-migrate).

## Bagaimana itu bekerja

`manage.py migrate` creates a `django_redirect` table in your database. This
is a simple lookup table with `site_id`, `old_path` and `new_path` fields.

[`RedirectFallbackMiddleware`](#django.contrib.redirects.middleware.RedirectFallbackMiddleware) melakukan semua dari pekerjaan. Setiap kali aplikasi Django apapun memunculkan kesalahan 404, middleware ini memeriksa pengalihan basisdata untuk URL diminta sebagai usaha terakhir. Khususnya, itu memeriksa untuk pengalihan dengan diberikan `old_path` dengan ID situs yang berhubungan pada pengaturan [`SITE_ID`](/id/1.11/ref/settings/#std-setting-SITE_ID).

- If it finds a match, and `new_path` is not empty, it redirects to
  `new_path` using a 301 ("Moved Permanently") redirect. You can subclass
  [`RedirectFallbackMiddleware`](#django.contrib.redirects.middleware.RedirectFallbackMiddleware)
  and set
  [`response_redirect_class`](#django.contrib.redirects.middleware.RedirectFallbackMiddleware.response_redirect_class)
  to [`django.http.HttpResponseRedirect`](/id/1.11/ref/request-response/#django.http.HttpResponseRedirect) to use a
  `302 Moved Temporarily` redirect instead.
- Jika itu menemukan kecocokan, dan `new_path` adalah kosong, itu mengirim sebuah 410 ("Gone") kepala HTTP dan tanggapan (kurang-isi) kosong.
- Jika itu tidak menemukan kecocokan, permintaan berlanjut untuk diolah seperti biasa.

Middleware hanya dapat diaktifasikan untuk 404 -- bukan untuk 500 atau tanggapan kode keadaan apapun lainnya.

Note that the order of [`MIDDLEWARE`](/id/1.11/ref/settings/#std-setting-MIDDLEWARE) matters. Generally, you can put
[`RedirectFallbackMiddleware`](#django.contrib.redirects.middleware.RedirectFallbackMiddleware) at the
end of the list, because it's a last resort.

Untuk lebih pada middleware, baca [dokumentasi middleware](/id/1.11/topics/http/middleware/).

## Bagaimana menambah, merubah dan menghapus pengalihan

### Melalui antarmuka admin

Jika anda telah mengaktifkan antarmuka admin Django otomatis, anda harus melihat bagian "Redirects" pada halaman indeks admin. Sunting pengalihan ketika anda menyunting obyek lain apapun di sistem.

### Melalui API Python

#### `class models.Redirect`

Pengalihan adalah diwakili oleh [Django model](/id/1.11/topics/db/models/) standar, yang tinggal di [django/contrib/redirects/models.py](https://github.com/django/django/blob/master/django/contrib/redirects/models.py). Anda dapat mengakses pengalihan obyek melalui [Django database API](/id/1.11/topics/db/queries/).

## Middleware

#### `class middleware.RedirectFallbackMiddleware`

Anda dapat merubah kelas-kelas [`HttpResponse`](/id/1.11/ref/request-response/#django.http.HttpResponse) digunakan oleh middleware dengan membuat sebuah subkelas dari [`RedirectFallbackMiddleware`](#django.contrib.redirects.middleware.RedirectFallbackMiddleware) dan terutama `response_gone_class` dan/atau `response_redirect_class`.

#### `response_gone_class`

Kelas [`HttpResponse`](/id/1.11/ref/request-response/#django.http.HttpResponse) digunakan ketika [`Redirect`](#django.contrib.redirects.models.Redirect) tidak ditemukan untuk jalur yang diminta atau mempunyai nilai `new_path` kosong.

Awalan pada [`HttpResponseGone`](/id/1.11/ref/request-response/#django.http.HttpResponseGone).

#### `response_redirect_class`

Kelas [`HttpResponse`](/id/1.11/ref/request-response/#django.http.HttpResponse) yang mengangani pengalihan.

Awalan pada [`HttpResponsePermanentRedirect`](/id/1.11/ref/request-response/#django.http.HttpResponsePermanentRedirect).
