پرش به محتوای اصلی
وب، سئو و فرانت‌اند
۲ دقیقه مطالعه

سئوی فنی فروشگاه اینترنتی با Next.js: وقتی مشکل کد نیست، بودجه خزش است

تجربه عملی سئوی فنی یک فروشگاه Next.js: رندر سمت سرور، داده ساختاریافته محصول، سایت‌مپ تمیز و مدیریت بودجه خزش گوگل برای صفحات فیلتر و برند.

سید محمد بهبهانی‌زاده
توسعه‌دهنده فول‌استک و معمار نرم‌افزار

در فروشگاه‌های اینترنتی، بیشتر مشکلات ایندکس نشدن صفحات از کد نیست؛ از این است که گوگل وقت و منابع محدودی برای خزیدن سایت شما دارد و آن را صرف URLهای بی‌ارزش می‌کند. در این یادداشت، چک‌لیستی را مرور می‌کنم که در عمل برای یک فروشگاه Next.js جواب داده است.

اول: HTML کامل از سرور

ربات گوگل جاوااسکریپت را اجرا می‌کند، اما با تاخیر و در صف جداگانه. اگر عنوان، قیمت و توضیح محصول در HTML اولیه نباشد، ایندکس شدن صفحه هفته‌ها عقب می‌افتد. در Next.js یعنی صفحات محصول و دسته‌بندی باید Server Component یا SSG باشند و متن اصلی بدون اجرای جاوااسکریپت دیده شود. یک تست ساده: صفحه را با curl بگیرید و دنبال نام محصول بگردید.

bash
curl -s -A "Googlebot" https://example.com/product/sample \
  | grep -o '<title>[^<]*</title>'

# اگر عنوان درست برنگشت، صفحه برای ربات خالی است

نکات کلیدی

  • متن اصلی، قیمت و موجودی در HTML اولیه باشد.
  • تگ canonical روی هر صفحه، به‌خصوص صفحاتی که پارامتر فیلتر دارند.
  • لیست‌های طولانی کارت را دوبار نفرستید (یک بار HTML و یک بار داده کلاینت)؛ حجم صفحه مستقیم روی سرعت خزش اثر دارد.

داده ساختاریافته محصول

Schema.org از نوع Product به گوگل می‌گوید قیمت، واحد پول، موجودی و برند چیست. این داده باید دقیقاً با چیزی که کاربر روی صفحه می‌بیند یکی باشد؛ اختلاف قیمت در JSON-LD و صفحه یکی از دلایل رایج هشدار در Search Console است.

typescript
const productJsonLd = {
  '@context': 'https://schema.org',
  '@type': 'Product',
  name: product.title,
  image: product.images,
  brand: { '@type': 'Brand', name: product.brand },
  offers: {
    '@type': 'Offer',
    price: product.price,          // همان عددی که روی صفحه است
    priceCurrency: 'IRR',
    availability: product.inStock
      ? 'https://schema.org/InStock'
      : 'https://schema.org/OutOfStock',
  },
};

بودجه خزش: URLهای بی‌ارزش را ببندید

هر ترکیب فیلتر (رنگ × برند × سایز × مرتب‌سازی) یک URL جدید می‌سازد و گوگل ممکن است هزاران صفحه تکراری را بخزد و به صفحات مهم نرسد. راه‌حل، کم کردن URLهای قابل‌خزش است، نه اضافه کردن صفحه جدید.

نکات کلیدی

  • صفحات فیلتر چندگانه را noindex کنید یا canonical را به دسته اصلی بدهید.
  • سایت‌مپ فقط شامل URLهای canonical و قابل ایندکس باشد.
  • برای برندهای مهم صفحه واقعی با محتوای اختصاصی بسازید، نه پارامتر ?brand=.
  • گزارش Crawl Stats در Search Console را هفتگی ببینید.

جمع‌بندی

سئوی فنی بیشتر از جنس حذف است: حذف URLهای تکراری، حذف حجم اضافه صفحه و حذف وابستگی محتوا به جاوااسکریپت. وقتی این‌ها درست شد، محتوای خوب فرصت دیده شدن پیدا می‌کند.

وب، سئو و فرانت‌اند
۱ دقیقه مطالعه

تایپوگرافی فارسی و RTL در رابط‌های مدرن: Vazirmatn، اعداد و Tailwind

نکات عملی برای ساخت رابط کاربری فارسی خوانا: انتخاب و میزبانی فونت، اعداد فارسی و جدولی، فاصله‌گذاری حروف، و ترکیب درست متن فارسی و انگلیسی در جهت راست‌به‌چپ.

مطالعه مقاله#RTL