pathRewrite.ts 711 B

1234567891011121314151617181920212223242526272829
  1. import { NextResponse } from "next/server";
  2. import type { NextRequest } from "next/server";
  3. export function pathRewrite(
  4. request: NextRequest,
  5. response: NextResponse
  6. ) {
  7. const { pathname } = request.nextUrl;
  8. const match = pathname.match(/^\/products\/([^/]+)_([^/]+)\.html$/);
  9. if (!match) {
  10. return response;
  11. }
  12. const [, slug, id] = match;
  13. const url = request.nextUrl.clone();
  14. url.pathname = `/product/${slug}/${id}`;
  15. const rewriteResponse = NextResponse.rewrite(url);
  16. // 保留前面处理逻辑已经设置的 Cookie
  17. response.cookies.getAll().forEach((cookie) => {
  18. rewriteResponse.cookies.set(cookie);
  19. });
  20. return rewriteResponse;
  21. }