Quản lý việc chuyển hướng trang bằng API Notiondesk

Tạo, liệt kê, cập nhật và xóa các liên kết chuyển hướng trang trung tâm trợ giúp Notiondesk thông qua API REST. Nhập hàng loạt các URL cũ sau khi di chuyển.

11 phút đọc

Việc chuyển hướng trang sẽ đưa người đọc khi họ truy cập vào đường dẫn cũ trên trung tâm trợ giúp của bạn đến một bài viết hoặc bộ sưu tập. API Notiondesk cho phép bạn liệt kê, tạo, cập nhật và xóa các chuyển hướng trang, nhờ đó bạn có thể nhập hàng trăm URL cũ sau khi di chuyển thay vì thêm chúng từng cái một trong bảng điều khiển. Dấu trang, liên kết được chia sẻ và kết quả tìm kiếm vẫn hoạt động bình thường.

Để quản lý chuyển hướng trong bảng điều khiển, hãy xem Cách quản lý chuyển hướng trang trong trung tâm trợ giúp của bạn .

Phương pháp Con đường Phạm vi Làm
GET/sites/{site_id}/page-redirectsreadDanh sách chuyển hướng, hiển thị bài viết mới nhất trước.
POST/sites/{site_id}/page-redirectswriteTạo một lệnh chuyển hướng
PATCH/sites/{site_id}/page-redirects/{redirect_id}writeCập nhật chuyển hướng
DELETE/sites/{site_id}/page-redirects/{redirect_id}adminXóa một lệnh chuyển hướng

Việc tạo và cập nhật các liên kết chuyển hướng đòi hỏi một kế hoạch bao gồm cả việc chuyển hướng trang.

Chuyển hướng trang danh sách

Danh sách này bao gồm mọi ngôn ngữ, ngôn ngữ mới nhất được liệt kê trước. Nó bao gồm cả các liên kết chuyển hướng do bạn tạo và các liên kết mà Notiondesk tự động tạo sau khi thay đổi slug.

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
}
Cánh đồng Nghĩa
idMã định danh chuyển hướng, được sử dụng là redirect_id
localeNgôn ngữ mục tiêu
typearticle hoặc category (một bộ sưu tập)
originmanual dành cho một lần chuyển hướng do ai đó tạo ra, system dành cho một Notiondesk được tạo ra khi slug thay đổi
source_pathCon đường chuyển hướng
target_idMã id của bài viết hoặc bộ sưu tập mục tiêu.
__ĐƯỢC BẢO TỒN_61__, __ĐƯỢC BẢO TỒN_60__ Tiêu đề và đoạn đường dẫn của mục tiêu trong locale
target_statusTrạng thái của mục tiêu, chẳng hạn như published hoặc draft
Lưu ý: Chuyển hướng chỉ gửi người đọc đến trang đích khi trang đó đã được xuất bản. Chuyển hướng đến bản nháp sẽ chờ đến khi bạn xuất bản trang đích.

Danh sách chỉ hiển thị tối đa 10.000 liên kết chuyển hướng mới nhất. Nếu hệ thống tích hợp của bạn xóa các liên kết chuyển hướng trong khi liệt kê chúng, hãy bắt đầu lại từ trang đầu tiên sau đó: việc xóa sẽ làm dịch chuyển các mục tiếp theo, do đó trang tiếp theo có thể bỏ qua một mục. Xem Phân trang và các yêu cầu API phiên bản Notiondesk .

Tạo trang chuyển hướng

Mọi trường thông tin đều bắt buộc:

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"}'
Cánh đồng Kiểu Ghi chú
typesợi dây __ĐÃ BẢO TỒN_54__ hoặc __ĐÃ BẢO TỒN_53__
source_pathsợi dây Đường dẫn chuyển hướng, tối đa 512 ký tự, ví dụ: /legacy/getting-started. Không có đường dẫn chuyển hướng nào khác của trung tâm trợ giúp được phép sử dụng đường dẫn này.
target_idsợi dây Mã id của bài viết hoặc bộ sưu tập mục tiêu, từ danh sách bài viết hoặc bộ sưu tập . Tối đa 255 ký tự.
localesợi dây Ngôn ngữ đích. Ngôn ngữ đích phải có bản dịch bằng ngôn ngữ đó.

Tuyến đường trả lời 201 Created với lệnh chuyển hướng mới, trong cùng các trường như danh sách.

  • Một source_path chuyển hướng khác đã sử dụng câu trả lời 409 conflict_error, và thông báo nêu tên đường dẫn.
  • Một target_id không có bản dịch trong locale trả về 404 not_found, và thông báo nêu tên ID.

Gửi mã lỗi Idempotency-Key với mỗi lần tạo. Việc thử lại với cùng khóa và nội dung sẽ trả về mã lỗi 201 mà không tạo chuyển hướng thứ hai. Xem Xử lý lỗi API Notiondesk, giới hạn tỷ lệ và thử lại .

Cập nhật chuyển hướng trang

Chỉ gửi các trường cần thay đổi. Các trường bạn không gửi sẽ giữ nguyên giá trị hiện tại.

Các trường tuân theo các quy tắc tạo. Tuyến đường trả lời 200 OK với lệnh chuyển hướng đã cập nhật.

Việc chuyển hướng vẫn phải trỏ đến một mục tiêu tồn tại trong locale sau khi thay đổi. Để trỏ việc chuyển hướng bài viết đến một bộ sưu tập, hãy gửi type và target_id cùng nhau.

Xóa chuyển hướng trang

Việc xóa không thể hoàn tác, vì vậy tuyến đường này cần hai biện pháp bảo vệ:

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}'
  • phạm vi admin;
  • phần thân {"confirm": true}, với giá trị boolean JSON true.

Đường dẫn trả về lỗi 204 No Content. Người đọc mở đường dẫn cũ sẽ không còn bị chuyển hướng nữa. Xóa cùng một đường dẫn chuyển hướng sẽ trả về lỗi 404 not_found, trừ khi bạn thử lại với cùng lỗi Idempotency-Key.

Phạm vi quyền chỉ hoạt động trên khóa được tạo bởi chủ sở hữu không gian làm việc hoặc Quản trị viên. Người biên tập có thể xóa liên kết chuyển hướng trong bảng điều khiển, nhưng không thể xóa bằng khóa API.admin

Chuyển hướng nhập sau khi di chuyển

Bạn đang chuyển từ một công cụ trung tâm trợ giúp khác? Hãy ánh xạ từng đường dẫn cũ đến bài viết mới tương ứng, sau đó tạo một liên kết chuyển hướng cho mỗi hàng. Đoạn mã này đọc một tệp CSV với các cột 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);
}
  • Khóa được tạo ra từ hàng, vì vậy chạy tập lệnh hai lần sẽ không tạo ra gì hai lần. Hàng được sửa sẽ có một khóa mới.
  • Đường dẫn đã có nhật ký chuyển hướng sẽ hiển thị conflict_error. Thay vào đó, hãy cập nhật nó hoặc giữ nguyên.
  • Số lượng yêu cầu ghi bị giới hạn ở mức 20 yêu cầu mỗi phút cho mỗi khóa, vì vậy 500 lần chuyển hướng sẽ mất khoảng 25 phút. Tập lệnh sẽ chờ khi bị giới hạn tốc độ, sau đó sẽ thử lại hàng đó.
  • Chỉ sử dụng khóa có phạm vi read và write.

Lỗi

Trạng thái Khicode
400 Một trường bị thiếu hoặc trống, type hoặc locale không được chấp nhận, giá trị quá dài, confirm không phải là true, hoặc phần thân chứa một trường không xác định.validation_error
403 Khóa này thiếu read, write hoặc admin, tùy thuộc vào tuyến đường.insufficient_scope
403 Gói dịch vụ của bạn không bao gồm chuyển hướng trang hoặc người tạo khóa không thể thay đổi trung tâm trợ giúp này.permission_denied
404 Trung tâm trợ giúp hoặc trang chuyển hướng không tồn tại trong không gian làm việc của bạn, hoặc mục tiêu không có bản dịch trong localenot_found
409 Một trang chuyển hướng khác của trung tâm trợ giúp đã sử dụng source_pathconflict_error

Xem các lỗi API, giới hạn tốc độ và số lần thử lại của Handle Notiondesk để biết phạm vi lỗi và các mã khác.

Câu hỏi thường gặp

Tôi có cần tạo chuyển hướng khi thay đổi slug không?

Thông thường là không. Notiondesk tự động tạo chuyển hướng khi bạn thay đổi slug do chính bạn thiết lập trên bài viết hoặc bộ sưu tập đã xuất bản, tính năng chuyển hướng tự động được bật cho trung tâm trợ giúp và gói dịch vụ của bạn bao gồm chuyển hướng trang. Những chuyển hướng đó sẽ hiển thị origin: "system" trong danh sách. Trong bất kỳ trường hợp nào khác, hãy tự tạo chuyển hướng. Tìm hiểu thêm về slug trong Cách tạo URL thân thiện cho bài viết và bộ sưu tập .

Liệu lệnh chuyển hướng có thể trỏ đến một URL bên ngoài không?

Không. Việc chuyển hướng trang trỏ đến một bài viết hoặc một tập hợp các bài viết trong cùng trung tâm trợ giúp.

Tại sao khóa của tôi có thể tạo chuyển hướng nhưng không thể xóa chúng?

Việc xóa yêu cầu phạm vi admin, trong khi việc tạo và cập nhật thì không. Thêm admin vào khóa và kiểm tra xem người tạo ra nó có phải là chủ sở hữu không gian làm việc hoặc Quản trị viên hay không.

Tiếp theo là gì?

Bài viết liên quan

Trang này có hữu ích không?

Still need help? Ask us