Next.js ile React-Helmet Entegrasyonu ve SEO Optimizasyonu

Selim KURT
3 min readOct 15, 2024

--

SEO (Arama Motoru Optimizasyonu), web sitenizin arama motorlarında görünür olmasını ve iyi sıralamalar elde etmesini sağlamak açısından hayati bir öneme sahiptir. Next.js, sunucu tarafı render (SSR) yetenekleri ile doğal olarak SEO dostu olsa da, SEO performansını artırmak için ekstra adımlar gerekebilir. React projelerinde belge başlığını yönetmek için kullanılan güçlü araçlardan biri ise React-Helmet’tir. React-Helmet’i Next.js ile nasıl entegre edebileceğinizi ve web sitenizi daha iyi SEO için nasıl optimize edebileceğinizi inceleyeceğiz.

React-Helmet Nedir?

React-Helmet, React uygulamalarınızda <title>, <meta>, <link> gibi belge başlığına yapılan değişiklikleri yönetmenizi sağlayan yeniden kullanılabilir bir bileşendir. Bu etiketlerin dinamik olarak güncellenmesi SEO, sosyal medya entegrasyonu ve kullanıcı deneyimi için önemlidir.

Neden React-Helmet’i Next.js ile Kullanmalısınız?

Next.js, belge başlığını yönetmek için kendi Head bileşenini sunsa da, React-Helmet daha gelişmiş özellikler sunar. Örneğin, etiketleri farklı bileşenler arasında yönetme yeteneği sağlar ve etiketlerin tekrarlanmasını önler. Bu özellikle büyük uygulamalarda, başlık öğelerinin birden fazla bileşen ya da sayfa arasında yönetilmesi gerektiğinde kullanışlıdır.

İşte React-Helmet’i Next.js ile kullanmanın bazı avantajları:

  1. Gelişmiş Başlık Yönetimi
    React-Helmet, başlık öğelerini bileşen düzeyinde yönetmenize olanak tanır. Yani, her bileşende farklı meta etiketleri, başlıklar ve diğer başlık öğeleri tanımlayabilirsiniz. Bu, SEO açısından büyük bir esneklik sağlar.
  2. SEO Esnekliği
    Dinamik uygulamalar (örneğin, bloglar veya e-ticaret siteleri) genellikle her sayfa için farklı meta etiketlere ve başlıklara ihtiyaç duyar. React-Helmet, sayfa içeriğine göre bu etiketleri kolayca ayarlamanızı sağlar.
  3. Etiket Tekrarlarını Önleme
    React-Helmet, yalnızca ilgili etiketlerin render edilmesini sağlayarak SEO’nuzun temiz ve etkili olmasını sağlar. Bu sayede aynı etiketlerin birden fazla kez eklenmesini önlersiniz.
  4. Sosyal Medya Entegrasyonu
    React-Helmet, sosyal medya platformlarında içeriğinizin nasıl görüneceğini kontrol etmenizi sağlar. Open Graph ve Twitter Card meta verilerini kolayca ekleyebilir ve paylaşımlarınızın daha çekici hale gelmesini sağlayabilirsiniz.
  5. Büyük Uygulamalarda Kullanım Kolaylığı
    Uygulamanız büyüdükçe belge başlığını yönetmek zorlaşabilir. React-Helmet, başlık öğelerini farklı bileşen ve sayfalarda yönetmenizi sağlayarak SEO etiketlerinin bakımı ve güncellenmesini kolaylaştırır.
  6. Next.js ile Sorunsuz Entegrasyon
    React-Helmet-Async, sunucu tarafı render işlemleri için optimize edilmiştir ve Next.js ile mükemmel bir uyum sağlar. Bu, başlık etiketlerinizin sunucu tarafında doğru şekilde render edilmesini ve SEO için gerekli meta verilerin arama motorları tarafından erişilebilir olmasını sağlar.

React-Helmet , Next.js Projesine Nasıl Entegre Edilir ?

Gerekli Bağımlılıkları Yükleyin

Öncelikle, React-Helmet ve React-Helmet-Async’i yüklemelisiniz. React-Helmet temel kütüphanedir, ancak React-Helmet-Async sunucu tarafı render işlemleri için önerilir.

npm install react-helmet react-helmet-async

Bir HelmetWrapper Bileşeni Oluşturun

Bu bileşen, uygulamanızın tamamını saracak ve helmet context’in sunucu ve istemci arasında doğru şekilde yönetilmesini sağlayacaktır.

import { HelmetProvider } from 'react-helmet-async';

const HelmetWrapper = ({ children }) => {
return (
<HelmetProvider>
{children}
</HelmetProvider>
);
};

export default HelmetWrapper;

HelmetWrapper’ı _app.js Dosyasına Entegre Edin

import HelmetWrapper from '../components/HelmetWrapper';
import '../styles/globals.css';

function MyApp({ Component, pageProps }) {
return (
<HelmetWrapper>
<Component {...pageProps} />
</HelmetWrapper>
);
}

export default MyApp;

React-Helmet’i Sayfalarda ve Bileşenlerde Kullanın

Artık sayfalarınızda veya bileşenlerinizde React-Helmet’i kullanarak başlık öğelerini dinamik olarak yönetebilirsiniz. Örneğin, index.js sayfasını bir dinamik başlık ve meta açıklaması ekleyerek güncelleyelim:

import { Helmet } from 'react-helmet-async';

export default function Home() {
return (
<>
<Helmet>
<title>Ana Sayfa | Harika Next.js Uygulamam</title>
<meta name="description" content="Harika Next.js uygulamamın ana sayfasına hoş geldiniz!" />
<link rel="canonical" href="https://www.example.com/" />
</Helmet>
<h1>Harika Next.js Uygulamama Hoş Geldiniz!</h1>
</>
);
}

Dinamik Rotaların Yönetimi

Uygulamanızda dinamik rotalar varsa (örneğin, her blog yazısının kendi sayfası olduğu bir blog), React-Helmet ile başlıkları, meta açıklamalarını ve diğer SEO öğelerini dinamik olarak oluşturabilirsiniz.

import { Helmet } from 'react-helmet-async';

const BlogPost = ({ post }) => {
return (
<>
<Helmet>
<title>{post.title} | Harika Blogum</title>
<meta name="description" content={post.excerpt} />
<meta name="keywords" content={post.keywords.join(', ')} />
<link rel="canonical" href={`https://www.example.com/blog/${post.slug}`} />
</Helmet>
<h1>{post.title}</h1>
<p>{post.content}</p>
</>
);
};

// Blog yazısını veritabanından çekme örneği
export async function getServerSideProps({ params }) {
const res = await fetch(`https://api.example.com/posts/${params.slug}`);
const post = await res.json();

return { props: { post } };
}

export default BlogPost;

React-Helmet’i Next.js ile entegre etmek, SEO optimizasyonlarınıza esneklik katar ve özellikle büyük, dinamik projelerde başlık yönetimini daha kolay ve düzenli hale getirir. Sunucu tarafında başlıkların doğru şekilde render edilmesini sağlayarak arama motorları tarafından daha iyi indekslenmenize yardımcı olur.

Okuduğunuz için teşekkürler

Her zaman gelişmek için yer olduğunu anlıyorum. Lütfen düşüncelerinizi paylaşmaktan çekinmeyin.

--

--

Selim KURT
Selim KURT

Written by Selim KURT

Software Developer - Mobile & Web Developer #react #reactnative #nextjs #frontend #digitaltransformation #javascript

No responses yet