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
+8 -1
View File
@@ -12,6 +12,8 @@ import { useSearchParams } from "next/navigation";
import states from "@/data/state.json";
import cities from "@/data/city.json";
import { isRootCity } from "@/lib/rootCity";
import { resolveCityDisplayName } from "@/lib/domainHelpers";
import { buildClinicsIntro } from "@/lib/listingIntro";
function ClinicsPage({ clinics, matchedCity, matchedState }) {
const searchParams = useSearchParams();
@@ -35,7 +37,7 @@ function ClinicsPage({ clinics, matchedCity, matchedState }) {
return (
<div>
<HeadPageList
title="لیست کلینیک ها و درمانگاه های تخصصی"
title={`کلینیکها و مراکز درمانی ${resolveCityDisplayName(matchedCity)}`}
detail="در قسمت زیر می توانید کلینیک مورد نظر خود را جستجو نمایید"
>
<SearchBar
@@ -48,6 +50,11 @@ function ClinicsPage({ clinics, matchedCity, matchedState }) {
setFilteredClinics={setFilteredClinics}
/>
</HeadPageList>
<div className="padding-responsive pt-[24px]">
<p className="text-[#525252] text-[14px] md:text-[16px] font-normal leading-8 text-justify">
{buildClinicsIntro(resolveCityDisplayName(matchedCity))}
</p>
</div>
<List
limit={12}
page={page}