Laravelでサイトマップを生成する方法
検索エンジンは、ページを見つけてインデックスするためにサイトマップを使用します。サイトマップはXMLファイルです。これにより、GoogleやBingに対して、サイト内にどのURLが存在するかを伝えることができます。
Laravelでは、Spatie Sitemapパッケージを使用してサイトマップを作成できます。
以下の手順に従って設定を行ってください。
パッケージのインストール ターミナルで次のコマンドを実行します:
composer require spatie/laravel-sitemapコントローラーの作成 ロジックを処理するための新しいコントローラーを生成します:
php artisan make:controller GenerateSitemapロジックの記述 作成したコントローラーを開き、以下のコードを追加します:
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