zukucode
主にWEB関連の情報を技術メモとして発信しています。

Laravel sitemap.xmlを動的に作成する

Laravelhttp://example.com/sitemap.xmlとアクセスした時にサイトマップを表示する方法を紹介します。

sitemap.xmlのファイルを作成するのではなく、Laravelのルーティング設定を行い、動的にサイトマップを作成して出力します。

ルーティング

以下のようにルーティング設定を行います。

http://example.com/sitemap.xmlとアクセスするとサイトマップを表示するようにします。

コントローラー名などは都合がいいように変更して問題ありません。

web.php
Route::get('sitemap.xml', 'SitemapController@sitemap');

コントローラーの設定

コントローラーの設定を行います。

SitemapController.php
public function sitemap()
{
  return response()->view('sitemap')->header('Content-Type', 'text/xml');
}

ビューの設定

以下のようにサイトマップのビューを作成します。

urlは必要に応じて追加していきます。

<? ?>phpのタグとして認識されてしまうので、echoで出力するようにします。

sitemap.blade.php
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>{{ url('/') }}</loc>
    <lastmod>2017-01-02</lastmod>
  </url>
</urlset>

関連記事