プログラミング画面

Laravel9でのsitmap.xmlの実装例(コピペOK)

Laravel9でのライブラリを使わない実装例になります。

ほぼコピペできるような内容なので、良かったらご活用ください。

現時点ではLaravel9に対応していないようですが、Laravel8以下であればlaravel-sitemapの利用をおすすめします。


ルーティングの定義

use App\Http\Controllers\SitemapController;

Route::get('/sitemap.xml', [SitemapController::class, 'index']);

コントローラーの定義

例として、ログイン / プライバシーポリシー / お問い合わせページのsitemap.xmlを定義します。

class SitemapController extends Controller
{
    public function index()
    {
        $data['data'] = [
            [
                'loc' => route('login'),
                'lastmod' => '2022-05-03',
                'changefreq' => 'weekly',
                'priority' => '1.0'
            ],
            [
                'loc' => route('privacy.policy'),
                'lastmod' => '2022-05-06',
                'changefreq' => 'weekly',
                'priority' => '0.8'
            ],
            [
                'loc' => route('contact'),
                'lastmod' => '2022-04-18',
                'changefreq' => 'weekly',
                'priority' => '0.8'
            ],
        ];
        return response()->view('sitemap.index', $data)->header('Content-type', 'text/xml');
    }
}

ビューの定義

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    @foreach ($data as $d)
        <url>
            <loc>{{ $d['loc'] }}</loc>
            <lastmod>{{ $d['lastmod'] }}</lastmod>
            <changefreq>{{ $d['changefreq'] }}</changefreq>
            <priority>{{ $d['priority'] }}</priority>
        </url>
    @endforeach
</urlset>

表示

/sitemap.xmlへアクセスして、下記のような表示になっていれば正常です。

※下記はhttps://localhost:8080/sitemap.xmlへアクセスした時の表示です。

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<script/>
<url>
<loc>http://localhost:8080/login</loc>
<lastmod>2022-05-03</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>http://localhost:8080/privacy-policy</loc>
<lastmod>2022-05-06</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://localhost:8080/contact</loc>
<lastmod>2022-04-18</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>

終わりに

Controllerのheaderメソッドで’text/xml’を指定するのを忘れないようにしてくださいね。

長文書くのがちょっと面倒だったので、今回はsitemap.xmlを生成する実装例を紹介しました。

最後にことわざを紹介して終わりたいと思います。

手を抜く(てをぬく)

しなければいけないことをやらないこと。または、力を尽くさず、いい加減にすること。

https://kotowaza.jitenon.jp/kotowaza/5383.php

短いですが、今回はこのあたりで終わりたいと思います。

最後まで読んで頂きありがとうございました。

少しでも参考になりましたら幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です