# صفحات فرود سئویی سایت عمومی علاوه بر `/` هفت صفحهٔ فرود دارد، هرکدام روی یک کلیدواژهٔ تجاری. آدرس هر صفحه فارسی و تخت است تا کلیدواژه در خودِ URL بنشیند. | کلیدواژه | آدرس | |---|---| | نرم‌افزار مدیریت کلینیک زیبایی | `/نرم-افزار-مدیریت-کلینیک-زیبایی` | | نرم‌افزار مدیریت کلینیک دندان‌پزشکی | `/نرم-افزار-مدیریت-کلینیک-دندانپزشکی` | | نرم‌افزار مدیریت کلینیک فیزیوتراپی | `/نرم-افزار-مدیریت-کلینیک-فیزیوتراپی` | | سیستم جامع درمانگاهی | `/سیستم-جامع-درمانگاهی` | | نرم‌افزار رایگان مدیریت کلینیک | `/نرم-افزار-رایگان-مدیریت-کلینیک` | | نرم‌افزار مدیریت مطب | `/نرم-افزار-مدیریت-مطب` | | CRM کلینیک‌ها | `/crm-کلینیک` | ## متن هر صفحه کجاست در `src/Shared/Landing/LandingRegistry.php` — نه در فایل Twig. هر صفحه یک `LandingPage` است با عنوان، توضیحات متا، کلیدواژه‌ها، `h1`، لید، فهرست امکانات، پرسش‌های متداول و اسلاگ صفحات مرتبط. برای ویرایش متن، فقط همان کلاس را عوض کن. برای افزودن صفحهٔ جدید، یک `LandingPage` تازه به `build()` اضافه کن؛ روت، sitemap و لینک فوتر خودشان به‌روز می‌شوند. ## چرا رجیستری، نه هفت فایل Twig قالب هر هفت صفحه یکی است و فقط متنشان فرق دارد. هفت فایل یعنی هر تغییر تم هشت بار تکرار شود و بعد از مدتی هشت نسخهٔ واگرا داشته باشیم. ## تم مشترک `templates/public/landing.html.twig` همان `encore_entry` صفحهٔ اصلی (`home`) را بارگذاری می‌کند و این partialها را با آن به اشتراک می‌گذارد: ``` templates/public/_header.html.twig templates/public/_hero_art.html.twig templates/public/_reg_modal.html.twig templates/public/_footer.html.twig templates/public/_page_scripts.html.twig ``` یعنی تغییر رنگ دکمه یا متن هدر در صفحهٔ اصلی، خودکار در هر هفت صفحه دیده می‌شود. `LandingPageTest::testLandingUsesTheHomepageTheme` همین را تضمین می‌کند. ## روت `LandingController` روی `/{slug}` با `priority: -10` می‌نشیند. اولویت منفی لازم است: این الگو هر مسیر تک‌بخشی را می‌گیرد و بدون آن جلوی `/health`، `/sitemap.xml` و هر روت ریشه‌ای بعدی را می‌بندد. `LandingPageTest::testExistingRoutesAreNotShadowed` مراقب همین است. ## سئو هر صفحه `title`، `description`، `keywords` و `canonical` مخصوص خودش دارد، و سه schema: `SoftwareApplication`، `BreadcrumbList` و `FAQPage`. JSON-LD با `json_encode` در Twig ساخته می‌شود نه رشتهٔ دستی — متن فارسی نقل‌قول دارد و JSONِ دست‌ساز خیلی راحت نامعتبر می‌شود. `sitemap.xml` خودش هر هفت صفحه را اضافه می‌کند و اسلاگ فارسی را percent-encode می‌کند. فوتر مشترک هم به همهٔ آن‌ها لینک می‌دهد تا صفحات یتیم نمانند. ## نکتهٔ محتوایی متن هر صنف عمداً از پایه متفاوت نوشته شده، نه یک قالب با نام تخصص عوض‌شده. هفت صفحه با متن مشابه از نگاه موتور جستجو محتوای تکراری است و هر هفت‌تا را پایین می‌کشد. `LandingRegistryTest` عنوان و `h1` تکراری را رد می‌کند، ولی شباهت متن بدنه را ماشین تشخیص نمی‌دهد — موقع افزودن صفحهٔ جدید حواست باشد.