api/docs/SEO-RECOMMENDATIONS.md

150 lines
9.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# پیشنهادات بهبود سئو - می‌مپس
این سند بر اساس بررسی قالب‌ها، کنترلرها، sitemap، robots.txt و متاتگ‌های فعلی تهیه شده است.
---
## ✅ مواردی که الان درست است
- **متاتگ‌های اصلی**: عنوان، توضیحات و کلمات کلیدی در `base.html.twig` و در هر صفحه با بلاک‌های مناسب پر شده‌اند.
- **Open Graph و Twitter Card**: برای شبکه‌های اجتماعی تنظیم شده است.
- **Canonical URL**: برای جلوگیری از محتوای تکراری استفاده شده است.
- **ساختار هدینگ**: در بیشتر صفحات یک `h1` و سلسله‌مراتب `h2`/`h3` رعایت شده است.
- **Structured Data**: اسکیماهای WebSite و Organization در base و HowTo در صفحه ویرایش نقشه وجود دارد.
- **robots.txt** و **sitemap.xml** موجود است و آدرس sitemap در robots درج شده است.
- **زبان و جهت**: `lang="fa"` و `dir="rtl"` به‌درستی تنظیم شده است.
---
## 🔴 اصلاحات ضروری
### 1. تصاویر OG و Twitter موجود نیستند
در `base.html.twig` به این فایل‌ها اشاره شده است:
- `https://memaps.ir/assets/images/og-image.jpg` (۱۲۰۰×۶۳۰)
- `https://memaps.ir/assets/images/twitter-image.jpg`
**وضعیت:** در `public/assets/images/` فقط `splash.png`، `logo_side_white.png` و `favicon.txt` وجود دارد.
**اقدام پیشنهادی:**
یک تصویر ۱۲۰۰×۶۳۰ پیکسل با لوگو و نام «می‌مپس» و یک خط توضیح کوتاه بسازید و با نام `og-image.jpg` ذخیره کنید. برای توییتر می‌توانید همان فایل را کپی و با نام `twitter-image.jpg` استفاده کنید (یا در صورت نیاز نسخه جداگانه بهینه برای توییتر).
بدون این تصاویر، هنگام اشتراک‌گذاری لینک در شبکه‌های اجتماعی، تصویر پیش‌فرض یا نامناسب نمایش داده می‌شود.
---
### 2. hreflang برای نسخه انگلیسی بدون صفحهٔ واقعی
در `base.html.twig` برای زبان انگلیسی لینک داده شده است:
```html
<link rel="alternate" hreflang="en" href="https://memaps.ir/en{{ app.request.requestUri }}">
```
**مشکل:** مسیرهای `/en/...` در سایت تعریف نشده‌اند و این آدرس‌ها به ۴۰۴ یا صفحهٔ اشتباه می‌رسند. دادن hreflang به صفحه‌ای که وجود ندارد برای موتورهای جستجو مطلوب نیست.
**اقدام پیشنهادی:**
- اگر **نسخه انگلیسی ندارید**: تگ‌های `hreflang="en"` و لینک به `/en/...` را حذف کنید و فقط `hreflang="fa"` و `hreflang="x-default"` را نگه دارید.
- اگر **قرار است نسخه انگلیسی اضافه شود**: ابتدا صفحات انگلیسی را پیاده کنید، سپس همین hreflang را برای آن آدرس‌های واقعی فعال کنید.
---
### 3. ناقص بودن sitemap.xml
**صفحات موجود در سایت که در sitemap نیستند:**
- `/about`
- `/search-api-guide`
- `/google-earth-api-guide`
- `/bing-api-guide`
**اقدام پیشنهادی:**
این آدرس‌ها را به `sitemap.xml` اضافه کنید و برای هر URL مقدار `lastmod` را با تاریخ به‌روز واقعی (یا حداقل سال/ماه جاری) تنظیم کنید. در صورت تمایل می‌توانید `changefreq` و `priority` را هم برای هر نوع صفحه منطقی انتخاب کنید.
---
### 4. صفحهٔ نقشه بدون H1
صفحهٔ `map.html.twig` فقط نقشهٔ تمام‌صفحه و دکمه‌ها را دارد و هیچ تگ `h1` برای موتور جستجو ندارد.
**اقدام پیشنهادی:**
یک `h1` با متن مناسب (مثلاً «نقشه آنلاین ایران - سرویس می‌مپس») اضافه کنید و در صورت نیاز با CSS آن را به‌صورت بصری مخفی کنید (مثلاً کلاس `visually-hidden` یا `sr-only`) تا فقط برای سئو و خوانندگان صفحه خوان باشد.
---
## 🟡 پیشنهادات تکمیلی
### 5. یکپارچه‌سازی عنوان صفحات
الان ترکیب‌هایی مثل «تماس با ما - می‌مپس» و «می‌مپس - نقشه آنلاین» با هم استفاده شده‌اند.
**پیشنهاد:**
یک الگوی ثابت انتخاب کنید، مثلاً همیشه:
`عنوان صفحه | می‌مپس`
یا
`عنوان صفحه - سرویس نقشه می‌مپس`
و در همهٔ صفحات (از جمله کنترلرها و بلاک `title`) آن را رعایت کنید تا در نتایج جستجو منسجم‌تر دیده شود.
---
### 6. طول توضیحات (description)
توضیحات متا بهتر است در حد ۱۵۰–۱۶۰ کاراکتر باشد تا در گوگل کامل نمایش داده شود.
برخی توضیحات فعلی طولانی‌تر هستند؛ می‌توانید آن‌ها را کوتاه‌تر و متمرکزتر کنید و عبارت کلیدی اصلی را در ۸۰ کاراکتر اول بگذارید.
---
### 7. Structured Data اختصاصی هر صفحه
- **صفحه تماس:** اضافه کردن اسکیمای `ContactPage` یا بخش تماس در اسکیمای `Organization` (با telephone, email, address در صورت وجود).
- **صفحات راهنما (مثلاً usage، search-api-guide، bing، google-earth):** در صورت مناسب بودن، اسکیمای `TechArticle` یا `Article` با `datePublished` و `dateModified` برای بهبود نمایش در نتایج جستجو.
- **صفحه تماس در صورت داشتن سوالات متداول:** اسکیمای `FAQPage` برای بخش سوالات متداول.
این کار به موتورهای جستجو کمک می‌کند نوع محتوا و اطلاعات تماس را بهتر درک کنند.
---
### 8. Breadcrumb در سمت سرور
الان breadcrumb به‌صورت JSON-LD در JavaScript در `base.html.twig` ساخته می‌شود.
**پیشنهاد:**
برای اطمینان بیشتر از خزش و ایندکس، می‌توانید برای هر صفحه در سمت سرور (مثلاً در کنترلر یا در قالب) آرایهٔ breadcrumb را بسازید و JSON-LD مربوط به BreadcrumbList را در خود HTML خروجی قرار دهید و در صورت تمایل، اسکریپت فعلی را حذف یا فقط برای نمایش بصری نگه دارید.
---
### 9. robots.txt
- **Crawl-delay:** مقدار `Crawl-delay: 1` توسط گوگل پشتیبانی نمی‌شود و نادیده گرفته می‌شود. اگر هدف فقط کاهش بار سرور است، می‌توانید این خط را حذف کنید تا هشدارهای غیرضروری در ابزارهای تست نداشته باشید.
- **Disallow برای مسیرهایی مثل `/var/`, `/vendor/`:** این‌ها معمولاً مسیر فایل‌سیستم هستند و به‌صورت مستقیم از وب در دسترس نیستند. اگر مطمئن هستید این مسیرها هرگز از طریق وب قابل دسترسی نیستند، می‌توانید آن‌ها را از robots حذف کنید؛ در غیر این صورت نگه داشتن آن‌ها ضرری ندارد.
---
### 10. آیکون‌ها و PWA
در `base.html.twig` و `site.webmanifest` به فایل‌هایی اشاره شده است که در پوشهٔ تصاویر وجود ندارند، از جمله:
- `apple-touch-icon.png` (۱۸۰×۱۸۰)
- `favicon-32x32.png`, `favicon-16x16.png`
- در manifest: `icon-192x192.png`, `icon-512x512.png`, `icon-96x96.png`, `screenshot-wide.png`, `screenshot-narrow.png`
**اقدام پیشنهادی:**
این آیکون‌ها و در صورت نیاز اسکرین‌شات‌ها را از روی لوگوی می‌مپس در سایزهای بالا تولید و در مسیرهای اشاره‌شده قرار دهید. اگر فعلاً PWA را فعال نمی‌کنید، می‌توانید در manifest فقط به فایل‌هایی اشاره کنید که واقعاً وجود دارند (مثلاً favicon.svg) تا خطای ۴۰۴ کاهش یابد.
---
## خلاصه اولویت‌ها
| اولویت | کار |
|--------|-----|
| بالا | اضافه کردن تصاویر `og-image.jpg` و `twitter-image.jpg` |
| بالا | حذف یا اصلاح hreflang برای زبان انگلیسی |
| بالا | تکمیل sitemap با about و سه راهنمای API و به‌روزرسانی lastmod |
| بالا | اضافه کردن یک H1 (ترجیحاً مخفی) به صفحهٔ نقشه |
| متوسط | یکنواخت کردن فرمت عنوان صفحات |
| متوسط | کوتاه کردن و بهینه‌سازی descriptionها |
| متوسط | اضافه کردن اسکیماهای ContactPage / Article / FAQ در صورت نیاز |
| پایین | سرورساید کردن breadcrumb و آیکون‌های PWA |
با انجام موارد با اولویت بالا، پایهٔ سئو و اشتراک‌گذاری اجتماعی سایت محکم‌تر می‌شود.