Laravel sitemap.xmlを動的に作成する
Laravelでhttp://example.com/sitemap.xmlとアクセスした時にサイトマップを表示する方法を紹介します。
sitemap.xmlのファイルを作成するのではなく、Laravelのルーティング設定を行い、動的にサイトマップを作成して出力します。
ルーティング
以下のようにルーティング設定を行います。
http://example.com/sitemap.xmlとアクセスするとサイトマップを表示するようにします。
コントローラー名などは都合がいいように変更して問題ありません。
web.phpRoute::get('sitemap.xml', 'SitemapController@sitemap');コントローラーの設定
コントローラーの設定を行います。
SitemapController.phppublic 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>