Laravel – Sitemap 超簡單生成方式

為了 SEO 我們須要在 public/sitemap.xml 自動生成。可以藉由第三方套件 https://github.com/spatie/laravel-sitemap

安裝

composer require spatie/laravel-sitemap

建立 command

這裡的方法,採用爬蟲自行前往訪問你的網站,就不須要手動指定每個網址。做好 command 指令以後,只須要放到 \App\Console\Kernel::schedule 指定什麼時候定時生成就可以了

public function handle()
{

    $file = public_path("sitemap.xml");
    $url = config("app.url");

    /**
     * 這裡須要用這個方法才能有效自動爬蟲。
     * 參考我的留言:{@link https://github.com/spatie/laravel-sitemap/discussions/505#discussioncomment-7299333}
     * 注意,config("app.url") 必須要是可以被真實訪問的網址,可以借用 ngrok 來測試。
     */
    SitemapGenerator::create($url)
            ->hasCrawled(function (Url $url) {
                // 選用生成時間   
                $url->setLastModificationDate(Carbon::today());
                return $url;
            })
            ->shouldCrawl(function (UriInterface $url) {
                // 排除掉不需要爬蟲的路徑。排除的路徑建議同步到 robots.txt 中。
                $path = $url->getPath();

                return (strpos($path, '/login-with-google') === false) and
                    (strpos($path, '/login-with-line') === false);
            })->configureCrawler(function (Crawler $crawler) {
                $crawler->ignoreRobots();
            })->writeToFile($file);
}

發表迴響