route.ts 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { NextResponse } from 'next/server'
  2. export async function GET() {
  3. const baseUrl = 'https://aiartools.com'
  4. const languages = ['en', 'zh']
  5. const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
  6. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  7. xmlns:xhtml="http://www.w3.org/1999/xhtml">
  8. <!-- 首页 -->
  9. <url>
  10. <loc>${baseUrl}/en</loc>
  11. <lastmod>${new Date().toISOString()}</lastmod>
  12. <changefreq>daily</changefreq>
  13. <priority>1.0</priority>
  14. <xhtml:link rel="alternate" hrefLang="en" href="${baseUrl}/en" />
  15. <xhtml:link rel="alternate" hrefLang="zh" href="${baseUrl}/zh" />
  16. <xhtml:link rel="alternate" hrefLang="x-default" href="${baseUrl}/en" />
  17. </url>
  18. <url>
  19. <loc>${baseUrl}/zh</loc>
  20. <lastmod>${new Date().toISOString()}</lastmod>
  21. <changefreq>daily</changefreq>
  22. <priority>1.0</priority>
  23. <xhtml:link rel="alternate" hrefLang="en" href="${baseUrl}/en" />
  24. <xhtml:link rel="alternate" hrefLang="zh" href="${baseUrl}/zh" />
  25. <xhtml:link rel="alternate" hrefLang="x-default" href="${baseUrl}/en" />
  26. </url>
  27. <!-- 功能页面 -->
  28. ${languages.map(lang => {
  29. return `
  30. <url>
  31. <loc>${baseUrl}/${lang}#features</loc>
  32. <lastmod>${new Date().toISOString()}</lastmod>
  33. <changefreq>weekly</changefreq>
  34. <priority>0.8</priority>
  35. <xhtml:link rel="alternate" hrefLang="en" href="${baseUrl}/en#features" />
  36. <xhtml:link rel="alternate" hrefLang="zh" href="${baseUrl}/zh#features" />
  37. <xhtml:link rel="alternate" hrefLang="x-default" href="${baseUrl}/en#features" />
  38. </url>
  39. <url>
  40. <loc>${baseUrl}/${lang}#demo</loc>
  41. <lastmod>${new Date().toISOString()}</lastmod>
  42. <changefreq>weekly</changefreq>
  43. <priority>0.9</priority>
  44. <xhtml:link rel="alternate" hrefLang="en" href="${baseUrl}/en#demo" />
  45. <xhtml:link rel="alternate" hrefLang="zh" href="${baseUrl}/zh#demo" />
  46. <xhtml:link rel="alternate" hrefLang="x-default" href="${baseUrl}/en#demo" />
  47. </url>
  48. <url>
  49. <loc>${baseUrl}/${lang}#pricing</loc>
  50. <lastmod>${new Date().toISOString()}</lastmod>
  51. <changefreq>weekly</changefreq>
  52. <priority>0.7</priority>
  53. <xhtml:link rel="alternate" hrefLang="en" href="${baseUrl}/en#pricing" />
  54. <xhtml:link rel="alternate" hrefLang="zh" href="${baseUrl}/zh#pricing" />
  55. <xhtml:link rel="alternate" hrefLang="x-default" href="${baseUrl}/en#pricing" />
  56. </url>`
  57. }).join('')}
  58. </urlset>`
  59. return new NextResponse(sitemap, {
  60. headers: {
  61. 'Content-Type': 'application/xml',
  62. 'Cache-Control': 'public, max-age=86400, s-maxage=86400',
  63. },
  64. })
  65. }