feat: add canonical URL handling and entity quality checks

- Implemented canonical URL strategies for city-specific domains and entities.
- Added helper functions for domain and city resolution.
- Created tests for canonical URL generation and domain resolution.
- Introduced entity quality checks for doctors and clinics to ensure meaningful content.
- Developed unique introductory texts for listing pages to avoid duplicate content.
- Established robots.txt policies for listing pages to manage indexing based on user filters.
- Enhanced specialty content with dynamic introductions and FAQs to improve SEO.
This commit is contained in:
hamed
2026-07-19 07:52:50 +03:30
parent 36816eded2
commit fd48b48613
48 changed files with 3951 additions and 733 deletions
+7 -4
View File
@@ -7,10 +7,13 @@ async function TextHeader() {
return (
<div className="z-[50]">
<h1 className="text-[#F17732] text-center text-[20px] sm:text-[24px] md:text-[28px] lg:text-[32px] font-bold">
{/* h1 صفحهٔ اصلی روی شعار می‌نشیند، نه روی خط برند: شعار هر شهر از city.json
کیوردمحور و شهرمحور است («پزشک یاسوج، آنلاین کنار شماست») ولی «با نوبت 724»
فقط برند است. تگ‌ها جابه‌جا شدند و کلاس‌ها عیناً حفظ — ظاهر تغییر نکرده. */}
<p className="text-[#F17732] text-center text-[20px] sm:text-[24px] md:text-[28px] lg:text-[32px] font-bold">
با {matchedCity?.site_name}
</h1>
<h2
</p>
<h1
className="text-[#525252] text-center mt-2.5 text-[16px] sm:text-[25px] md:text-[31px] lg:text-[36px] font-bold flex items-center gap-0.5 sm:gap-1 md:gap-2"
>
<div className="max-w-[18px] sm:max-w-[22px]">
@@ -20,7 +23,7 @@ async function TextHeader() {
<div className="max-w-[18px] sm:max-w-[22px]">
<AText />
</div>
</h2>
</h1>
</div>
);
}