Product pages emit crawler-readable meta, public URLs use id plus Farsi slugs, and the homepage catalog matches the dashboard slot keys. Co-authored-by: Cursor <cursoragent@cursor.com>
27 lines
930 B
TypeScript
27 lines
930 B
TypeScript
import { notFound, permanentRedirect } from "next/navigation";
|
|
import { getCategoryById, getCategoryBySlug, getProduct, getProductById } from "@/lib/api";
|
|
import { categoryHref, productHref } from "@/lib/paths";
|
|
|
|
/** Legacy `/products/{id-or-slug}` → canonical product or category URL. */
|
|
export default async function LegacyProductOrCategoryRedirect({
|
|
params,
|
|
}: {
|
|
params: Promise<{ id: string }>;
|
|
}) {
|
|
const { id } = await params;
|
|
|
|
const productById = await getProductById(id);
|
|
if (productById) permanentRedirect(productHref(productById));
|
|
|
|
const productBySlug = await getProduct(id);
|
|
if (productBySlug) permanentRedirect(productHref(productBySlug));
|
|
|
|
const categoryById = await getCategoryById(id);
|
|
if (categoryById) permanentRedirect(categoryHref(categoryById));
|
|
|
|
const categoryBySlug = await getCategoryBySlug(id);
|
|
if (categoryBySlug) permanentRedirect(categoryHref(categoryBySlug));
|
|
|
|
notFound();
|
|
}
|