Laravel sitemap.xmlを動的に作成する
Laravel
でhttp://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>