Laravel에서 사이트맵을 생성하는 방법

검색 엔진은 페이지를 찾고 인덱싱하기 위해 사이트맵을 사용합니다. 사이트맵은 XML 파일입니다. 이는 Google과 Bing에 사이트에 어떤 URL이 존재하는지 알려줍니다.

Spatie Sitemap 패키지를 사용하여 Laravel에서 사이트맵을 구축할 수 있습니다.

다음 단계에 따라 설정하세요.

  1. 패키지 설치 터미널에서 다음 명령어를 실행하세요: composer require spatie/laravel-sitemap

  2. 컨트롤러 생성 로직을 처리할 새 컨트롤러를 생성합니다: php artisan make:controller GenerateSitemap

  3. 로직 작성 새 컨트롤러를 열고 다음 코드를 추가하세요:

namespace App\Http\Controllers;

use Spatie\Sitemap\Sitemap;
use Spatie\Sitemap\Tags\Url;
use App\Models\Post;

class GenerateSitemap extends Controller
{
public function index()
{
$sitemap = Sitemap::create();

$sitemap->add(
Url::create('/')
->setPriority(1.0)
->setChangeFrequency(Url::CHANGE_FREQUENCY_DAILY)
);

Post::with('category')
->where('status', 1)
->latest()
->get()
->each(function ($post) use ($sitemap) {
$sitemap->add(
Url::create($post->category->slug . '/' . $post->slug)
->setLastModificationDate($post->updated_at)
->setPriority(0.9)
->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY)
);
});

$sitemap->writeToFile(public_path('sitemap.xml'));

return back()->with('success', 'Sitemap Generated!');
}
}

이 코드가 하는 역할:

  • 새로운 사이트맵 객체를 생성합니다.
  • 홈페이지를 높은 우선순위로 추가합니다.
  • 데이터베이스의 포스트를 순회합니다.
  • 모든 포스트 URL을 파일에 추가합니다.
  • 파일을 public 폴더에 sitemap.xml로 저장합니다.

사이트맵은 yourdomain.com/sitemap.xml에서 확인할 수 있습니다.

이는 검색 엔진이 새로운 콘텐츠를 빠르게 찾을 수 있도록 도와줍니다.

출처: https://dev.to/mindwarezone/how-to-generate-a-sitemap-in-laravel-a-complete-guide-4go6