feat: add sitemap, tag for SEO
This commit is contained in:
@@ -8,9 +8,17 @@ import FreeTrial from './components/FreeTrial';
|
||||
// import ScientificBenefits from './components/ScientificBenefits';
|
||||
import CallToAction from './components/CallToAction';
|
||||
import Footer from './components/Footer';
|
||||
import { SEOHead } from './components/SEOHead';
|
||||
|
||||
function App() {
|
||||
return (
|
||||
<>
|
||||
|
||||
<SEOHead
|
||||
title="آراملند - تمرین تنفسی و مدیتیشن"
|
||||
description="اپلیکیشن آراملند - همراه شما برای رسیدن به آرامش درونی با مدیتیشنهای فارسی، تمرینهای تنفسی و موسیقی آرامشبخش"
|
||||
canonical="/" ogImage="../app/og-image.png" />
|
||||
|
||||
<div className="min-h-screen bg-gradient-to-b from-blue-50 via-white to-green-50" dir="rtl">
|
||||
<Header />
|
||||
|
||||
@@ -44,6 +52,7 @@ function App() {
|
||||
<Footer />
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ function Header() {
|
||||
{ name: 'چرا ما', id: 'why-aramland' },
|
||||
{ name: 'دانلود', id: 'download' },
|
||||
{ name: 'ارتباط با ما', id: 'footer' },
|
||||
{ name: 'بلاگ', id: 'blog' },
|
||||
];
|
||||
|
||||
const handleNavClick = (sectionId) => {
|
||||
@@ -38,7 +39,13 @@ function Header() {
|
||||
{navigationItems.map((item) => (
|
||||
<button
|
||||
key={item.id}
|
||||
onClick={() => handleNavClick(item.id)}
|
||||
onClick={() =>{
|
||||
if (item.id === 'blog') {
|
||||
window.open('https://aramland.approagency.ir/blog/', '_blank');
|
||||
} else {
|
||||
handleNavClick(item.id);
|
||||
}
|
||||
}}
|
||||
className="text-gray-600 hover:text-primary-500 font-medium transition-colors duration-200 relative group text-sm lg:text-base"
|
||||
>
|
||||
{item.name}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
// components/SEOHead.jsx
|
||||
export function SEOHead({
|
||||
title,
|
||||
description,
|
||||
canonical,
|
||||
ogImage
|
||||
}) {
|
||||
const siteUrl = 'https://aramland.approagency.ir/';
|
||||
|
||||
return (
|
||||
<>
|
||||
<title>{title}</title>
|
||||
<meta name="description" content={description} />
|
||||
|
||||
{/* Canonical URL */}
|
||||
<link rel="canonical" href={`${siteUrl}${canonical}`} />
|
||||
|
||||
{/* Open Graph */}
|
||||
<meta property="og:title" content={title} />
|
||||
<meta property="og:description" content={description} />
|
||||
<meta property="og:url" content={`${siteUrl}${canonical}`} />
|
||||
<meta property="og:image" content={ogImage || `${siteUrl}/og-image.png`} />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:locale" content="fa_IR" />
|
||||
|
||||
{/* Twitter */}
|
||||
<meta name="twitter:title" content={title} />
|
||||
<meta name="twitter:description" content={description} />
|
||||
<meta name="twitter:image" content={ogImage || `${siteUrl}/og-image.png`} />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
</>
|
||||
);
|
||||
}
|
||||
+100
-2
@@ -4,9 +4,66 @@ import './globals.css';
|
||||
export const metadata: Metadata = {
|
||||
title: 'آراملند | تمرین تنفسی و مدیتیشن',
|
||||
description: 'لحظهای آرام بگیر، زندگی را حس کن',
|
||||
keywords: ['مدیتیشن فارسی', 'آرامش', 'تمرین تنفسی', 'کاهش استرس', 'ذهنآگاهی', 'مدیتیشن هدایت شده', 'سلامت روان', 'آراملند'],
|
||||
authors: [{ name: 'آراملند' }],
|
||||
creator: 'آراملند',
|
||||
publisher: 'آراملند',
|
||||
metadataBase: new URL('https://aramland.approagency.ir/'),
|
||||
formatDetection: {
|
||||
email: false,
|
||||
address: false,
|
||||
telephone: false,
|
||||
},
|
||||
icons: {
|
||||
icon: '/favicon.png',
|
||||
},
|
||||
alternates: {
|
||||
canonical: '/',
|
||||
languages: {
|
||||
'fa-IR': '/',
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
title: 'آراملند - دستیار آرامش و مدیتیشن فارسی',
|
||||
description: 'اپلیکیشن آراملند - همراه شما برای رسیدن به آرامش درونی با مدیتیشنهای فارسی و تمرینهای تنفسی',
|
||||
url: 'https://aramland.com',
|
||||
siteName: 'آراملند',
|
||||
images: [
|
||||
{
|
||||
url: '/og-image.png', // Create this image (1200x630px)
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: ' آراملند - اپلیکیشن مدیتیشن و آرامش - تمرین تنفسی',
|
||||
},
|
||||
],
|
||||
|
||||
locale: 'fa_IR',
|
||||
type: 'website',
|
||||
},
|
||||
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'آراملند - تمرین تنفسی و مدیتیشن',
|
||||
description: 'اپلیکیشن آراملند - همراه شما برای رسیدن به آرامش درونی',
|
||||
images: ['/og-image.png'],
|
||||
creator: '@aramland', // Replace with your Twitter handle
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
googleBot: {
|
||||
index: true,
|
||||
follow: true,
|
||||
'max-video-preview': -1,
|
||||
'max-image-preview': 'large',
|
||||
'max-snippet': -1,
|
||||
},
|
||||
},
|
||||
verification: {
|
||||
// Add your verification codes here
|
||||
google: 'google-site-verification=HIKgdf_siYdPxbJ2P1792opMprpxci_QjE-quk9kyi8', // From Google Search Console
|
||||
// yandex: 'your-yandex-verification-code', // If targeting Iran/Russia
|
||||
},
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
@@ -16,8 +73,49 @@ export default function RootLayout({
|
||||
}) {
|
||||
return (
|
||||
<html lang="fa" dir="rtl">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<head>
|
||||
<meta
|
||||
name="google-site-verification"
|
||||
content="HIKgdf_siYdPxbJ2P1792opMprpxci_QjE-quk9kyi8"
|
||||
/>
|
||||
{/* Favicon */}
|
||||
<link rel="icon" href="/favicon.ico" sizes="any" />
|
||||
<link rel="icon" href="/icon?<generated>" type="image/<generated>" sizes="<generated>" />
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
||||
|
||||
{/* Preload critical resources */}
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
|
||||
|
||||
{/* Structured Data for SEO */}
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebApplication",
|
||||
"aggregateRating": {
|
||||
"@type": "AggregateRating",
|
||||
"ratingValue": "4.5",
|
||||
"ratingCount": "1000"
|
||||
},
|
||||
"name": "آراملند",
|
||||
"description": "اپلیکیشن آراملند - همراه شما برای رسیدن به آرامش درونی با مدیتیشنهای فارسی و تمرینهای تنفسی",
|
||||
"url": "https://aramland.approagency.ir/",
|
||||
"applicationCategory": "HealthApplication",
|
||||
"operatingSystem": "Android, iOS, Web",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"price": "0",
|
||||
"priceCurrency": "IRR"
|
||||
},
|
||||
"author": {
|
||||
"@type": "Organization",
|
||||
"name": "آراملند"
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
</head>
|
||||
<body className="antialiased">
|
||||
{children}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
@@ -0,0 +1,15 @@
|
||||
// app/robots.txt
|
||||
User-agent: *
|
||||
Allow: /
|
||||
Disallow: /api/
|
||||
Disallow: /_next/
|
||||
Disallow: /private/
|
||||
|
||||
Sitemap: https://aramland.approagency.ir/sitemap.xml
|
||||
|
||||
# Iranian search engines
|
||||
User-agent: YoozBot
|
||||
Allow: /
|
||||
|
||||
User-agent: Parsijoo
|
||||
Allow: /
|
||||
@@ -0,0 +1,30 @@
|
||||
// app/sitemap.js
|
||||
export default function sitemap() {
|
||||
const baseUrl = 'https://aramland.approagency.ir/';
|
||||
|
||||
return [
|
||||
{
|
||||
url: baseUrl,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'monthly',
|
||||
priority: 1,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/features`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'monthly',
|
||||
priority: 0.9,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/download`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.8,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
// Add this export for static generation
|
||||
export async function generateSitemaps() {
|
||||
return [{ id: '0' }];
|
||||
}
|
||||
@@ -3,5 +3,4 @@ import type { NextConfig } from "next";
|
||||
const nextConfig: NextConfig = {
|
||||
output: 'export',
|
||||
};
|
||||
|
||||
export default nextConfig;
|
||||
|
||||
Reference in New Issue
Block a user