Przekierowanie strony kieruje czytelników, którzy otwierają starą ścieżkę w centrum pomocy, do artykułu lub kolekcji. Interfejs API Notiondesk umożliwia wyświetlanie, tworzenie, aktualizowanie i usuwanie przekierowań stron, dzięki czemu po migracji można zaimportować setki starych adresów URL zamiast dodawać je pojedynczo w panelu. Zakładki, udostępnione linki i wyniki wyszukiwania nadal działają.
Aby zarządzać przekierowaniami z poziomu pulpitu nawigacyjnego, zapoznaj się z tematem Jak zarządzać przekierowaniami stron w centrum pomocy .
| Metoda | Ścieżka | Zakres | Robi |
|---|---|---|---|
GET | /sites/{site_id}/page-redirects | read | Przekierowania listy, najnowsze na początku |
POST | /sites/{site_id}/page-redirects | write | Tworzy przekierowanie |
PATCH | /sites/{site_id}/page-redirects/{redirect_id} | write | Aktualizuje przekierowanie |
DELETE | /sites/{site_id}/page-redirects/{redirect_id} | admin | Usuwa przekierowanie |
Tworzenie i aktualizowanie przekierowań wymaga planu uwzględniającego przekierowania stron.
Wyświetl przekierowania stron
Lista obejmuje wszystkie języki, od najnowszych na górze. Obejmuje przekierowania utworzone przez Ciebie oraz te, które Notiondesk tworzy automatycznie po zmianie ślimaka.
curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects?page_size=100" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16"{
"object": "list",
"data": [
{
"id": "3f1c2a9e-8b7d-4c6e-9a5f-1e2d3c4b5a69",
"locale": "en",
"type": "article",
"origin": "manual",
"source_path": "/legacy/getting-started",
"target_id": "1761580412",
"target_title": "Getting started",
"target_slug": "getting-started",
"target_status": "published"
}
],
"has_more": false,
"next_cursor": null
}| Pole | Oznaczający |
|---|---|
id | Identyfikator przekierowania używany jako redirect_id |
locale | Język docelowy |
type | article lub category (kolekcja) |
origin | manual dla przekierowania utworzonego przez kogoś, system dla przekierowania utworzonego przez Notiondesk, gdy zmieniono ślimaka |
source_path | Ścieżka, która przekierowuje |
target_id | id docelowego artykułu lub kolekcji |
target_title, target_slug | Tytuł celu i segment ścieżki w locale |
target_status | Status celu, np. published lub draft |
Lista obejmuje maksymalnie 10 000 najnowszych przekierowań. Jeśli Twoja integracja usuwa przekierowania podczas ich wyświetlania, zacznij od nowa od pierwszej strony: usunięcie przesuwa kolejne elementy, więc następna strona może pominąć jeden z nich. Zobacz Paginat i wersję Notiondesk API Requests .
Utwórz przekierowanie strony
Każde pole jest wymagane:
curl -X POST "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f0d6b1e-create-getting-started" \
-d '{"type": "article", "source_path": "/legacy/getting-started", "target_id": "1761580412", "locale": "en"}'| Pole | Typ | Notatki |
|---|---|---|
type | smyczkowy | article lub category |
source_path | smyczkowy | Ścieżka przekierowania, do 512 znaków, na przykład /legacy/getting-started. Żadne inne przekierowanie z centrum pomocy nie może jej używać. |
target_id | smyczkowy | id docelowego artykułu lub kolekcji z listy artykułów lub kolekcji . Do 255 znaków |
locale | smyczkowy | Język docelowy. Docelowy język musi zawierać tłumaczenie. |
Trasa odpowiada 201 Created nowym przekierowaniem w tych samych polach co lista.
source_pathinne przekierowanie już używa odpowiedzi 409conflict_error, a komunikat podaje nazwę ścieżki.
target_idbez tłumaczenia wlocaleodpowiada 404not_found, a wiadomość podaje identyfikator.
Wysyłaj Idempotency-Key przy każdym utworzeniu. Ponowna próba z tym samym kluczem i treścią odpowiada na to samo 201 bez tworzenia drugiego przekierowania. Zobacz Obsługa błędów API Notiondesk, limitów szybkości i ponownych prób .
Zaktualizuj przekierowanie strony
Wyślij tylko pola do zmiany. Każde pominięte pole zachowa swoją obecną wartość.
Pola są zgodne z regułami tworzenia. Trasa odpowiada 200 OK zaktualizowanym przekierowaniem.
Po zmianie przekierowanie musi nadal wskazywać na cel istniejący w locale. Aby skierować przekierowanie artykułu do kolekcji, wyślij razem type i target_id.
Usuń przekierowanie strony
Usunięcia nie można cofnąć, dlatego trasa wymaga dwóch zabezpieczeń:
curl -X PATCH "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects/3f1c2a9e-8b7d-4c6e-9a5f-1e2d3c4b5a69" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16" \
-H "Content-Type: application/json" \
-d '{"source_path": "/legacy/start"}'curl -i -X DELETE "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects/3f1c2a9e-8b7d-4c6e-9a5f-1e2d3c4b5a69" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'- zakres
admin;
- treść
{"confirm": true}z wartością logiczną JSONtrue.
Trasa odpowiada 204 No Content. Czytelnicy, którzy otworzą starą ścieżkę, przestaną być przekierowywani. Ponowne usunięcie tego samego przekierowania odpowiada 404 not_found, chyba że spróbujesz ponownie z tym samym Idempotency-Key.
adminPrzekierowania importu po migracji
Przenosisz się z innego narzędzia centrum pomocy? Zmapuj każdą starą ścieżkę do nowego artykułu, a następnie utwórz jedno przekierowanie dla każdego wiersza. Ten skrypt odczytuje plik CSV z kolumnami source_path,target_id,locale:
import { readFileSync } from "node:fs";
import { createHash } from "node:crypto";
const siteId = "c74781f6-1aea-4e17-ab23-bbb8b4d174b6";
const rows = readFileSync("redirects.csv", "utf8").trim().split(/\r?\n/).slice(1);
for (const row of rows) {
const [source_path, target_id, locale] = row.split(",");
const idempotencyKey = createHash("sha256").update(`${source_path}|${target_id}|${locale}`).digest("hex");
const response = await fetch(`https://api.notiondesk.so/sites/${siteId}/page-redirects`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.NOTIONDESK_API_KEY}`,
"nd-version": "2026-10-16",
"Content-Type": "application/json",
"Idempotency-Key": idempotencyKey,
},
body: JSON.stringify({ type: "article", source_path, target_id, locale }),
});
if (response.status === 429) {
const seconds = Number(response.headers.get("Retry-After")) || 5;
console.log(`Rate limited, waiting ${seconds}s`);
await new Promise((resolve) => setTimeout(resolve, seconds * 1000));
rows.push(row);
continue;
}
const result = await response.json();
console.log(response.status, source_path, response.ok ? result.id : result.code);
}- Klucz jest generowany z wiersza, więc dwukrotne uruchomienie skryptu nic nie daje. Poprawiony wiersz otrzymuje nowy klucz.
- Ścieżka, która ma już przekierowanie, loguje
conflict_error. Zamiast tego zaktualizuj ją lub pozostaw.
- Liczba zapisów jest ograniczona do 20 żądań na minutę dla każdego klucza, więc 500 przekierowań zajmuje około 25 minut. Skrypt czeka, aż limit zostanie osiągnięty, a następnie ponawia próbę odczytania wiersza.
- Użyj klucza tylko z zakresami
readiwrite.
Błędy
| Status | Gdy | code |
|---|---|---|
| 400 | Brakuje pola lub jest ono puste, type lub locale nie jest akceptowane, wartość jest zbyt długa, confirm nie jest true lub treść zawiera nieznane pole | validation_error |
| 403 | W zależności od trasy kluczowi brakuje read, write lub admin | insufficient_scope |
| 403 | Twój plan nie obejmuje przekierowań stron lub twórca klucza nie może zmienić tego centrum pomocy | permission_denied |
| 404 | Centrum pomocy lub przekierowanie nie istnieje w Twojej przestrzeni roboczej lub obiekt docelowy nie ma tłumaczenia w locale | not_found |
| 409 | Inne przekierowanie centrum pomocy już używa source_path | conflict_error |
Zobacz temat Obsługa błędów API Notiondesk, limitów szybkości i ponownych prób, aby zapoznać się z obwiednią błędu i innymi kodami.
Często zadawane pytania
Czy muszę tworzyć przekierowania, gdy zmieniam ślimak?
Zazwyczaj nie. Notiondesk tworzy przekierowanie automatycznie, gdy zmienisz ślimak ustawiony ręcznie w opublikowanym artykule lub kolekcji, automatyczne przekierowania są włączone dla centrum pomocy, a Twój plan obejmuje przekierowania stron. Te przekierowania wyświetlają origin: "system" na liście. W każdym innym przypadku utwórz przekierowanie samodzielnie. Dowiedz się więcej o ślimakach w artykule Jak tworzyć ładne adresy URL dla artykułów i kolekcji .
Czy przekierowanie może wskazywać na zewnętrzny adres URL?
Nie. Przekierowanie strony prowadzi do artykułu lub zbioru tego samego centrum pomocy.
Dlaczego mój klucz może tworzyć przekierowania, ale nie może ich usuwać?
Do usunięcia potrzebny jest zakres admin, którego tworzenie i aktualizacja nie wymagają. Dodaj admin do klucza i sprawdź, czy jego twórca jest właścicielem lub administratorem obszaru roboczego.