Laravel'de Sitemap Nasıl Oluşturulur? 14 Ekim

Laravel'de Sitemap Nasıl Oluşturulur?

İçindekiler

1. Spatie Sitemap Paketini Yükleme

Laravel'de sitemap oluşturmak için spatie/laravel-sitemap paketini kullanabiliriz. Bu paketi projemize eklemek için aşağıdaki komutu kullanın:


composer require spatie/laravel-sitemap
    

Bu paket, sitenizdeki sayfaları tarayıp XML formatında bir sitemap dosyası oluşturmanıza yardımcı olacaktır.

2. Sitemap Yapılandırması

Sitemap oluşturma işlemi için genellikle model verilerini kullanarak dinamik bir yapı oluşturmak gerekir. Bunun için örnek bir yapılandırma yapacağız.

Örnek: Blog Yazıları için Sitemap

Blog yazıları gibi dinamik içerikleri sitemap'e eklemek için öncelikle web.php içinde gerekli rotaları oluşturabiliriz.

3. Sitemap Oluşturma

SitemapController.php adında bir kontrolcü oluşturalım ve burada sitemap dosyasını dinamik olarak oluşturalım.


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Spatie\Sitemap\Sitemap;
use Spatie\Sitemap\Tags\Url;
use App\Models\Post; // Örnek olarak blog post modelini kullanıyoruz

class SitemapController extends Controller
{
    public function index()
    {
        // Yeni bir sitemap nesnesi oluştur
        $sitemap = Sitemap::create();

        // Blog yazılarını sitemap'e ekliyoruz
        $posts = Post::all();
        foreach ($posts as $post) {
            $sitemap->add(Url::create("/post/{$post->slug}")
                ->setLastModificationDate($post->updated_at)
                ->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY)
                ->setPriority(0.8));
        }

        // Sitemap dosyasını public dizinine kaydet
        $sitemap->writeToFile(public_path('sitemap.xml'));

        return response()->json(['message' => 'Sitemap başarıyla oluşturuldu']);
    }
}
    

Bu örnekte:

  • Blog yazılarını sitemap'e eklemek için Post modelini kullanıyoruz.
  • Her yazının URL'si, son güncellenme tarihi ve öncelik seviyesi ile birlikte sitemap'e ekleniyor.

4. Sitemap için Route Oluşturma

Artık bu sitemap'i oluşturmak için bir rota tanımlayalım. web.php dosyanıza aşağıdaki kodu ekleyin:


use App\Http\Controllers\SitemapController;

Route::get('/sitemap', [SitemapController::class, 'index']);
    

Bu route, /sitemap URL'sine gidildiğinde SitemapController içinde tanımladığımız index metodunu çalıştırır ve sitemap dosyasını oluşturur.

5. Otomatik Sitemap Güncelleme

Sitemap dosyasının düzenli olarak güncellenmesi SEO için çok önemlidir. Bunun için Laravel'in scheduler (görev zamanlayıcı) özelliğini kullanabiliriz.

app/Console/Kernel.php dosyasını açın ve içine aşağıdaki kodu ekleyin:


protected function schedule(Schedule $schedule)
{
    // Sitemap'i her gün otomatik olarak oluştur
    $schedule->call(function () {
        Artisan::call('route:sitemap');
    })->daily();
}
    

Bu kod sayesinde, sitemap dosyası her gün otomatik olarak oluşturulacaktır.

6. Sonuç

Laravel projelerinde sitemap oluşturmak, arama motorlarının sitenizi daha iyi taramasına yardımcı olur ve SEO performansınızı artırır. Spatie Sitemap paketi sayesinde dinamik içerikleri de sitemap'e kolayca ekleyebilirsiniz. Bu makalede, sitemap oluşturmayı, rotalamayı ve güncellemeyi detaylarıyla anlattık. Artık siz de kendi projenizde kolayca sitemap oluşturabilir ve SEO optimizasyonu sağlayabilirsiniz.