یه چیزی رو همون اول رک بگم: اون چیزی که شما به عنوان کاربر توی مرورگر میبینید، همیشه همون چیزی نیست که گوگل میبینه.
و دقیقاً همین فاصلهی «چیزی که هست» با «چیزی که گوگل میفهمه»، باعث میشه بعضی سایتها با اینکه قشنگن، سریعان، محتوا هم دارن… ولی توی نتایج رشد نمیکنن.
من این پست رو طوری نوشتم که هم برای کسی که تازه سایت میزنه کاربردی باشه، هم برای کسی که چند ساله سئو کار میکنه و دنبال نکتهی فنی واقعی میگرده. پایهی حرفها هم مستندات Google Search Central و تجربهی اجراست، نه حدس و گمان.
خیلی از سایتهای مدرن (خصوصاً SPAها و سایتهایی که با React/Vue/Angular زیاد بازی میکنن) یه ویژگی دارن:
صفحه ظاهراً پر از محتواست… ولی اون محتوا با جاوااسکریپت تزریق شده.
اینجا داستان گوگل جالب میشه:
گوگل معمولاً اول HTML اولیه رو میخونه، بعد (اگر لازم باشه) میره سراغ رندر کردن تا نسخهی نهایی رو ببینه. مشکل اینه که این رندر شدن میتونه با تأخیر اتفاق بیفته. یعنی شما امروز یک تغییر مهم میدید، ولی گوگل ممکنه چند روز بعد تازه بفهمه.
این چندتا کار رو انجام بده، دقیقاً همونجا خیلی از حقیقتها رو میفهمی:
View Page Source رو باز کن (سورس خام)
دنبال چیزهای حیاتی بگرد: عنوان محصول، قیمت، توضیح اصلی، لیست آیتمها…
اگر توی سورس نیست ولی توی صفحه هست، یعنی محتوای شما احتمالاً JS-محوره.
از اون طرف Inspect / Elements رو نگاه کن
این همون DOM رندرشدهست؛ یعنی چیزی که کاربر میبینه.
اگر اختلاف سورس و DOM زیاد باشه، باید جدیتر بررسی کنی.
توی سرچ کنسول، URL Inspection رو بزن و Rendered HTML رو ببین
این یکی از بهترین راههاست که بفهمی «گوگل بعد از رندر» چی برداشت کرده.
اگر پروژه دست خودته یا تیم فنی همراهه:
SSR / SSG (مثل Next/Nuxt) یا حداقل رندر اولیهی محتوا روی سرور، معجزه میکنه.
یعنی گوگل همون موج اول، محتوا رو حاضر و آماده میبینه.
اگر فعلاً نمیتونی معماری رو تغییر بدی:
Dynamic Rendering میتونه نقش چسب زخم رو بازی کنه (گوگل هم به عنوان workaround ازش یاد کرده)،
اما حواست باشه: این راهحل «همیشگی» نیست و معمولاً برای پروژههای در حال مهاجرت یا شرایط خاص استفاده میشه، نه به عنوان معماری نهایی.
این جمله رو باید طلا گرفت:
گوگل با لینکها جلو میره.
خیلی وقتها طراح تجربه کاربری همه چی رو میذاره پشت دکمهها:
«نمایش بیشتر»
«بارگذاری بعدی»
«فیلترهای Ajax»
«اسکرول بینهایت»
ولی گوگل قرار نیست بشینه مثل کاربر با سایت بازی کنه.
پس اگر مسیر خزیدن با لینک واقعی ساخته نشده باشه، شما عملاً یه بخشهایی از سایت رو گذاشتی توی تاریکی.
از خودت بپرس:
اگر جاوااسکریپت خاموش باشه، آیا هنوز میتونم به صفحههای مهم برسم؟
اگر جواب «نه» باشه، یعنی باید مسیر رو اصلاح کنی.
اسکرول بینهایت برای کاربر جذابه، قبول.
ولی اگر درست پیاده نشه، نتیجهاش اینه:
محصولات صفحه ۲ و ۳ و ۴…
یا مقالههای پایینتر…
اصلاً توسط گوگل دیده نمیشن.
راه درستش اینه که پشت صحنه، صفحهبندی واقعی با URL داشته باشی.
یعنی چی؟
کاربر اسکرول میکنه و محتوا اضافه میشه ✅
ولی همزمان:
URL تغییر میکنه (مثلاً ?page=2)
یا حداقل لینکهای قابل خزیدن برای page=2 و page=3 وجود داره
و هر صفحهی صفحهبندیشده قابل دسترسی با لینک HTML هست
به زبان ساده:
ظاهرش اسکروله، باطنش صفحهبندیه.
برای هر صفحه صفحهبندیشده، یک URL ثابت داشته باش (نه فقط state داخل JS)
لینک به صفحات بعدی باید با <a href> واقعی باشه، نه فقط event روی دکمه
اگر فیلترها داری، مراقب باش ترکیبهای بینهایت نسازی که بودجه خزش رو بخوره
یکی از جاهایی که خیلیها حرفهای نیستن (حتی سایتهای بزرگ) همینجاست:
حذف صفحات.
404 یعنی: «الان پیدا نشد» (ممکنه بعداً برگرده)
410 یعنی: «برای همیشه رفت»
اگر شما محصول یا صفحهای رو برای همیشه حذف کردی و هیچ برنامهای برای برگشتش نداری،
دادن 410 کمک میکنه گوگل سریعتر بفهمه این URL تموم شده و لازم نیست هی برگرده چکش کنه.
من معمولاً این مدل تصمیم میگیرم:
اگر جایگزین نزدیک دارم → 301 به نزدیکترین صفحه مرتبط
اگر جایگزین ندارم و صفحه واقعاً تموم شده → 410
اگر احتمال بازگشت هست یا حذف موقتیه → 404
و یه نکتهی خیلی مهم:
اگر 404 یا 410 میدی ولی هنوز از داخل سایت به اون صفحه لینک داری، یعنی خودت داری گوگل رو اذیت میکنی.
پس همیشه بعد از حذف:
لینکهای داخلی رو جمع کن
از سایتمپ بردار
اگر بکلینک مهمی داشته، تصمیم ریدایرکت رو جدیتر بگیر
AMP یه دورهای ستاره بود.
اما امروز اگر هدف تو بهبود تجربه و سرعته، مسیر پایدارتر اینه:
Core Web Vitals
بهینهسازی رندر
کنترل JS و منابع سنگین
معماری درست موبایل
AMP هنوز تو بعضی سناریوها میتونه مفید باشه (خصوصاً بعضی رسانهها یا پروژههایی که بهش وابستهان)،
ولی برای خیلی از سایتها، نگهداری دو نسخه از صفحات (AMP و Canonical) فقط یک منبع دردسر اضافیه.
آدرسهای ?amp=1 یا /amp توی سرچ کنسول زیاد شده
صفحات AMP با canonical درست ست نشده
یا کاربر از AMP میاد و تجربهاش با نسخه اصلی فرق داره
اگر AMP داری، یا باید خیلی تمیز نگهش داری، یا منطقی حذفش کنی و تمرکز رو بذاری روی نسخه اصلی.
اگر بخوام خیلی عملی جمعبندی کنم، اینا رو برای هر سایت بررسی کن:
محتوای کلیدی توی View Source هست؟
URL Inspection سرچ کنسول، Rendered HTML چی نشون میده؟
لینکهای حیاتی با <a href> هستن یا همهچی event و JSه؟
صفحهبندی واقعی داری یا فقط Infinite Scroll نمایشی؟
صفحات حذفشده: 301/404/410 درست انتخاب شدن؟
لینک داخلی به URLهای حذفشده وجود داره؟
سایتمپ با وضعیت واقعی صفحات هماهنگه؟
JS سنگین باعث تاخیر رندر نمیشه؟
آیا Googlebot بدون تعامل میتونه به صفحات عمیق برسه؟
اگر AMP داری، canonical/alternate درست و تمیزه؟
سئو مدرن فقط «محتوا بنویس و لینک بگیر» نیست.
یه بخش بزرگش اینه که مطمئن شی گوگل اصلاً چیزی که ساختی رو میبینه.
اگر دوست داشتی، زیر همین پست بگو:
تو سایتهایی که دیدی، کدوم مورد بیشتر تکرار میشه؟
محتوای تزریقی با JS؟
infinite scroll بدون URL؟
حذف اشتباه صفحات و ریدایرکتهای بد؟
https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics