feat: auto-generated sitemap and robots.txt
This commit is contained in:
parent
700f93e418
commit
88c3752238
19
frontend/application/app/robots.ts
Normal file
19
frontend/application/app/robots.ts
Normal file
@ -0,0 +1,19 @@
|
||||
import { MetadataRoute } from 'next';
|
||||
|
||||
export default function robots(): MetadataRoute.Robots {
|
||||
const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://canina-iran.com';
|
||||
|
||||
return {
|
||||
rules: {
|
||||
userAgent: '*',
|
||||
allow: '/',
|
||||
disallow: [
|
||||
'/dashboard/',
|
||||
'/checkout/',
|
||||
'/profile/',
|
||||
'/api/'
|
||||
],
|
||||
},
|
||||
sitemap: `${baseUrl}/sitemap.xml`,
|
||||
};
|
||||
}
|
||||
56
frontend/application/app/sitemap.ts
Normal file
56
frontend/application/app/sitemap.ts
Normal file
@ -0,0 +1,56 @@
|
||||
import { MetadataRoute } from 'next';
|
||||
import { productService } from '../lib/services/productService';
|
||||
|
||||
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://canina-iran.com';
|
||||
|
||||
// Static routes
|
||||
const staticRoutes: MetadataRoute.Sitemap = [
|
||||
{
|
||||
url: `${baseUrl}`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'daily',
|
||||
priority: 1,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/shop`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'daily',
|
||||
priority: 0.9,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/wiki`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.8,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/blog`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.8,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/search`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.5,
|
||||
},
|
||||
];
|
||||
|
||||
// Dynamic products
|
||||
try {
|
||||
const products = await productService.getProducts();
|
||||
const productRoutes: MetadataRoute.Sitemap = products.map((product) => ({
|
||||
url: `${baseUrl}/shop/${product.id}`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.7,
|
||||
}));
|
||||
|
||||
return [...staticRoutes, ...productRoutes];
|
||||
} catch (error) {
|
||||
console.error("Failed to generate product sitemap:", error);
|
||||
return staticRoutes;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user