Đặt câu hỏi và nhận tóm tắt tài liệu bằng cách tham chiếu trang này và nhà cung cấp AI bạn chọn
Lịch sử phiên bản
- "Gộp configOptions thành một đối tượng tùy chọn duy nhất; proxy được tích hợp trong intlayer()"v9.0.025/6/2026
Nội dung của trang này đã được dịch bằng AI.
Xem phiên bản mới nhất của nội dung gốc bằng tiếng AnhIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
intlayerProxy
intlayerProxy là một plugin Vite đăng ký middleware định tuyến locale cho mọi môi trường: máy chủ phát triển (dev), máy chủ xem trước (preview) và SSR sản xuất (Nitro / TanStack Start).
Từ phiên bản Intlayer v9,intlayerProxyđược tự động bao gồm bên trong plugin chínhintlayer()và được bật mặc định thông qua cấu hìnhrouting.enableProxy: true. Bạn chỉ cần đăng ký riêng nếu cần kiểm soát ở mức thấp hơn hoặc đang sử dụng bên ngoài thiết lậpintlayer()tiêu chuẩn.
Cách sử dụng
Như một phần của intlayer() (khuyên dùng, v9+)
Truyền các tùy chọn proxy cho plugin chính thay vì đăng ký intlayerProxy riêng biệt:
Sao chép mã vào clipboard
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api"), }, }), ],});Độc lập (khi cần thiết)
Sao chép mã vào clipboard
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});Các tùy chọn
Sao chép mã vào clipboard
import type { IntlayerProxyPluginOptions } from "vite-intlayer";Tất cả các tùy chọn đều không bắt buộc và được truyền dưới dạng một đối tượng duy nhất:
Mở bảng trong một cửa sổ bật lên để xem toàn bộ nội dung dữ liệu một cách rõ ràng
| Tùy chọn | Kiểu dữ liệu | Mô tả |
|---|---|---|
ignore | (req: IncomingMessage) => boolean | Hàm điều kiện giúp loại trừ các yêu cầu khỏi định tuyến ngôn ngữ. Trả về true để bỏ qua một yêu cầu (ví dụ: các đường dẫn API, kiểm tra sức khỏe). |
configOptions | GetConfigurationOptions | Các ghi đè cấu hình Intlayer được chuyển tiếp đến getConfiguration(). Sử dụng khi bạn cần proxy đọc một tệp cấu hình cụ thể hoặc ghi đè các giá trị. |
Ví dụ
Sao chép mã vào clipboard
intlayerProxy({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});createIntlayerProxyHandler
createIntlayerProxyHandler tạo một middleware độc lập, không phụ thuộc vào framework dành cho Node.js dạng (req, res, next) chứa toàn bộ logic định tuyến ngôn ngữ. Nó hữu ích trong các môi trường không có sẵn API của plugin Vite (ví dụ: một máy chủ Node.js đơn giản hoặc một mô-đun Nitro tùy chỉnh).
Sao chép mã vào clipboard
import { createIntlayerProxyHandler } from "vite-intlayer";const handler = createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});// Express / Connectapp.use(handler);SSR Sản xuất (TanStack Start / Nitro thông qua h3)
Sao chép mã vào clipboard
// server/middleware/intlayerProxy.tsimport { fromNodeMiddleware } from "h3";import { createIntlayerProxyHandler } from "vite-intlayer";export default fromNodeMiddleware( createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), }));Hành vi định tuyến
Middleware phản chiếu logic định tuyến từ middleware next-intlayer và hỗ trợ tất cả các chế độ định tuyến của Intlayer.
Các chế độ định tuyến
Mở bảng trong một cửa sổ bật lên để xem toàn bộ nội dung dữ liệu một cách rõ ràng
| Chế độ | URL hiển thị trên trình duyệt | Hành vi |
|---|---|---|
prefix | /vi/about | Mặc định. Tiền tố locale trong URL. Ngôn ngữ mặc định chuyển hướng đến URL không có tiền tố trừ khi bật prefix-all. |
prefix-all | /en/about, /vi/about | Tất cả các ngôn ngữ — bao gồm cả mặc định — đều luôn có tiền tố. |
no-prefix | /about | Không có ngôn ngữ trong URL. Ngôn ngữ chỉ được lưu trữ trong cookie; việc viết lại URL diễn ra nội bộ. |
search-params | /about?locale=vi | Ngôn ngữ được truyền dưới dạng tham số truy vấn. Chuyển hướng để thêm/cập nhật tham số locale khi thiếu hoặc cũ. |
Mức độ ưu tiên phát hiện
- Tiền tố đường dẫn URL (ví dụ:
/vi/about→vi). - Giá trị cookie / localStorage (
intlayer-locale). - Tiêu đề
Accept-Language. defaultLocaletừ cấu hình.
Bỏ qua tự động
Middleware luôn cho phép các yêu cầu sau đi thẳng mà không cần xử lý locale:
- Các yêu cầu khớp với hàm điều kiện
ignore. /node_modules/**/@**– các thành phần nội bộ của Vite (@vite/,@fs/,@id/, v.v.)./_**– các thành phần nội bộ của máy chủ (__vite_ping,__manifest, v.v.).- Các yêu cầu có đường dẫn kết thúc bằng phần mở rộng tệp (tài nguyên tĩnh). Nếu tiền tố locale xuất hiện trên đường dẫn tài nguyên tĩnh (ví dụ:
/vi/logo.png), nó sẽ bị loại bỏ để tệp có thể được phân phát chính xác.
Định tuyến tên miền
Khi routing.domains được định cấu hình trong cấu hình Intlayer của bạn, middleware sẽ xử lý định tuyến locale chéo miền:
- Một yêu cầu cho
/zh/abouttrênintlayer.orgsẽ được chuyển hướng đếnhttps://intlayer.zh/aboutkhidomains.zh = "intlayer.zh". - Một yêu cầu đến
intlayer.zh/aboutđược viết lại nội bộ thành/zh/aboutđể tham số tuyến đường[locale]được cập nhật dữ liệu.
Bảo vệ vòng lặp chuyển hướng
Middleware theo dõi số lần chuyển hướng cho mỗi cặp originalUrl → newUrl trong một khoảng thời gian trượt (sliding window) dài 2 giây. Hơn 10 lần chuyển hướng trong khoảng thời gian đó sẽ trả về phản hồi 500 kèm theo mô tả lỗi chi tiết thay vì lặp lại mãi mãi.
Nitro / SSR sản xuất (tự động đưa vào, v9+)
Khi intlayerProxy được sử dụng dưới dạng plugin Vite, nó mang thuộc tính .nitro. Plugin xây dựng nitro/vite đọc thuộc tính này và đẩy nó vào nitroConfig.modules, do đó intlayerNitroHandler được đăng ký làm middleware máy chủ Nitro tự động — không cần cấu hình thủ công cho SSR sản xuất.
Trình xử lý Nitro sử dụng mô hình sự kiện Web Fetch API của h3 v2 (không phải fromNodeMiddleware) nên nó tương thích với tất cả các cấu hình Nitro: Node, Bun, Deno, edge runtimes.
Các bí danh lỗi thời
Mở bảng trong một cửa sổ bật lên để xem toàn bộ nội dung dữ liệu một cách rõ ràng
| Xuất khẩu lỗi thời | Thay thế |
|---|---|
intlayerMiddleware | intlayerProxy |
intLayerMiddlewarePlugin | intlayerProxy |