---
title: "Appen för omdirigeringar"
version: 6.1
locale: sv
source: https://docs.djangoproject.com/sv/6.1/ref/contrib/redirects/
canonical: https://djangodocs.dev/sv/6.1/ref/contrib/redirects/
---
# Appen för omdirigeringar

Django levereras med en valfri redirects-applikation. Den låter dig lagra omdirigeringar i en databas och hanterar omdirigeringen åt dig. Den använder HTTP-svarsstatuskoden `301 Moved Permanently` som standard.

## Installation

Följ dessa steg för att installera appen Redirects:

1. Se till att ramverket `django.contrib.sites` [är installerat](/sv/6.1/ref/contrib/sites/#enabling-the-sites-framework).
2. Lägg till `'django.contrib.redirects'` i inställningen [`INSTALLED_APPS`](/sv/6.1/ref/settings/#std-setting-INSTALLED_APPS).
3. Lägg till `'django.contrib.redirects.middleware.RedirectFallbackMiddleware'` till din [`MIDDLEWARE`](/sv/6.1/ref/settings/#std-setting-MIDDLEWARE) inställning.
4. Kör kommandot [`manage.py migrate`](/sv/6.1/ref/django-admin/#django-admin-migrate).

## Hur det fungerar

`manage.py migrate` skapar en `django_redirect` tabell i din databas. Detta är en uppslagstabell med fälten `site_id`, `old_path` och `new_path`.

[`RedirectFallbackMiddleware`](#django.contrib.redirects.middleware.RedirectFallbackMiddleware) gör allt arbete. Varje gång en Django-applikation ger upphov till ett 404-fel kontrollerar denna middleware omdirigeringsdatabasen för den begärda webbadressen som en sista utväg. Specifikt söker det efter en omdirigering med den givna `old_path` med ett webbplats-ID som motsvarar inställningen [`SITE_ID`](/sv/6.1/ref/settings/#std-setting-SITE_ID).

- Om den hittar en matchning och `new_path` inte är tom, omdirigeras den till `new_path` med en 301 (”Moved Permanently”) omdirigering. Du kan underordna [`RedirectFallbackMiddleware`](#django.contrib.redirects.middleware.RedirectFallbackMiddleware) och ställa in [`response_redirect_class`](#django.contrib.redirects.middleware.RedirectFallbackMiddleware.response_redirect_class) till [`django.http.HttpResponseRedirect`](/sv/6.1/ref/request-response/#django.http.HttpResponseRedirect) för att använda en `302 Moved Temporarily`-omdirigering istället.
- Om den hittar en matchning och `new_path` är tom, skickar den en 410 (”Gone”) HTTP-header och ett tomt (innehållslöst) svar.
- Om den inte hittar någon matchning fortsätter begäran att behandlas som vanligt.

Middleware aktiveras endast för 404:or - inte för 500:or eller svar med någon annan statuskod.

Observera att ordningen på [`MIDDLEWARE`](/sv/6.1/ref/settings/#std-setting-MIDDLEWARE) spelar roll. I allmänhet kan du sätta [`RedirectFallbackMiddleware`](#django.contrib.redirects.middleware.RedirectFallbackMiddleware) i slutet av listan, eftersom det är en sista utväg.

Mer information om middleware finns i [middleware docs](/sv/6.1/topics/http/middleware/).

## Så här lägger du till, ändrar och tar bort omdirigeringar

### Via administratörsgränssnittet

Om du har aktiverat det automatiska Django-administratörsgränssnittet bör du se ett avsnitt ”Omdirigeringar” på adminindexsidan. Redigera omdirigeringar som du redigerar alla andra objekt i systemet.

### Via Python API

#### `class models.Redirect`

Redirects representeras av en standard [Django model](/sv/6.1/topics/db/models/), som finns i [django/contrib/redirects/models.py](https://github.com/django/django/blob/stable/6.1.x/django/contrib/redirects/models.py). Du kan komma åt omdirigeringsobjekt via [Django databas API](/sv/6.1/topics/db/queries/). Till exempel:

```pycon
>>> from django.conf import settings
>>> from django.contrib.redirects.models import Redirect
>>> # Add a new redirect.
>>> redirect = Redirect.objects.create(
...     site_id=1,
...     old_path="/contact-us/",
...     new_path="/contact/",
... )
>>> # Change a redirect.
>>> redirect.new_path = "/contact-details/"
>>> redirect.save()
>>> redirect
<Redirect: /contact-us/ ---> /contact-details/>
>>> # Delete a redirect.
>>> Redirect.objects.filter(site_id=1, old_path="/contact-us/").delete()
(1, {'redirects.Redirect': 1})
```

## Middleware

#### `class middleware.RedirectFallbackMiddleware`

Du kan ändra [`HttpResponse`](/sv/6.1/ref/request-response/#django.http.HttpResponse)-klasserna som används av middleware genom att skapa en underklass av [`RedirectFallbackMiddleware`](#django.contrib.redirects.middleware.RedirectFallbackMiddleware) och åsidosätta `response_gone_class` och/eller `response_redirect_class`.

#### `response_gone_class`

Klassen [`HttpResponse`](/sv/6.1/ref/request-response/#django.http.HttpResponse) används när en [`Redirect`](#django.contrib.redirects.models.Redirect) inte hittas för den begärda sökvägen eller har ett tomt `new_path`-värde.

Standardvärde för [`HttpResponseGone`](/sv/6.1/ref/request-response/#django.http.HttpResponseGone).

#### `response_redirect_class`

Klassen [`HttpResponse`](/sv/6.1/ref/request-response/#django.http.HttpResponse) som hanterar omdirigeringen.

Standardvärde för [`HttpResponsePermanentRedirect`](/sv/6.1/ref/request-response/#django.http.HttpResponsePermanentRedirect).
