Laravel Sitemap
spatie/laravel-sitemap
사이트맵을 손쉽게 만들고 생성하세요
이 패키지는 URL을 일일이 추가하지 않아도 사이트맵을 생성해 줍니다. 사이트 전체를 크롤링하는 방식으로 동작합니다.
use Spatie\Sitemap\SitemapGenerator;
SitemapGenerator::create('https://example.com')->writeToFile($path);사이트맵을 직접 수동으로 만들 수도 있습니다.
use Carbon\Carbon;
use Spatie\Sitemap\Sitemap;
use Spatie\Sitemap\Tags\Url;
Sitemap::create()
->add(Url::create('/home')
->setLastModificationDate(Carbon::yesterday()))
->add(...)
->writeToFile($path);또는 사이트맵을 먼저 생성한 뒤 링크를 추가하는 방식으로 두 가지 장점을 모두 취할 수도 있습니다.
use Spatie\Sitemap\SitemapGenerator;
use Spatie\Sitemap\Tags\Url;
SitemapGenerator::create('https://example.com')
->getSitemap()
->add(Url::create('/extra-page')
->setLastModificationDate(Carbon::yesterday()))
->add(...)
->writeToFile($path);크롤링 결과를 여러 사이트맵으로 나누기
크롤링한 URL을 여러 개의 사이트맵 파일로 나누고 싶을 때가 있습니다(예: 블로그용 하나, 나머지 사이트용 하나). 이렇게 하면 Google Search Console에서 섹션별 색인 현황을 추적하기가 더 쉬워집니다.
writeToFile에 클로저를 전달하세요. 클로저는 각 Url을 받아, 해당 URL이 들어갈 파일의 경로를 반환합니다.
use Spatie\Sitemap\SitemapGenerator;
use Spatie\Sitemap\Tags\Url;
SitemapGenerator::create('https://example.com')
->writeToFile(fn (Url $url) => str_starts_with($url->path(), '/blog')
? public_path('sitemap-blog.xml')
: public_path('sitemap-pages.xml'));클로저에서 null을 반환하면 해당 URL은 어떤 사이트맵에도 포함되지 않습니다.
기본적으로 사이트맵 인덱스는 작성되지 않습니다. sitemapIndexPath를 호출하면 작성된 각 사이트맵을 참조하는 인덱스도 함께 생성됩니다.
SitemapGenerator::create('https://example.com')
->sitemapIndexPath(public_path('sitemap.xml'))
->writeToFile(fn (Url $url) => str_starts_with($url->path(), '/blog')
? public_path('sitemap-blog.xml')
: public_path('sitemap-pages.xml'));이 방식을 maxTagsPerSitemap()과 함께 사용하면, 한도를 넘는 그룹은 번호가 붙은 파일(sitemap-blog_0.xml, sitemap-blog_1.xml)로 다시 나뉘고, 각 파일이 인덱스에 등록됩니다.
Sitemapable 인터페이스를 구현하면 모델을 사이트맵에 직접 추가할 수도 있습니다.
use Spatie\Sitemap\Contracts\Sitemapable;
use Spatie\Sitemap\Tags\Url;
class Post extends Model implements Sitemapable
{
public function toSitemapTag(): Url | string | array
{
return route('blog.post.show', $this);
}
}후원하기
Spatie는 최고 수준의 오픈 소스 패키지를 만드는 데 많은 자원을 투자하고 있습니다. 유료 제품 중 하나를 구매해 주시면 큰 힘이 됩니다.
사용 중인 패키지를 알려 주며 고향에서 보낸 엽서를 보내 주시면 매우 감사하겠습니다. 주소는 문의 페이지에서 확인할 수 있습니다. 받은 모든 엽서는 온라인 엽서 월에 게시합니다.
문서
모든 문서는 공식 문서 사이트에서 볼 수 있습니다.
테스트
composer test변경 내역
최근 변경 사항은 CHANGELOG를 참고하세요.
기여하기
자세한 내용은 CONTRIBUTING을 참고하세요.
보안
보안 관련 버그를 발견하셨다면 이슈 트래커 대신 security@spatie.be로 메일을 보내 주세요.
크레딧
라이선스
MIT 라이선스(MIT)를 따릅니다. 자세한 내용은 라이선스 파일을 참고하세요.
