原文链接 : 于高衡の博客
在做seo优化的时候,需要给搜索引擎爬虫提供一个网站地图文件,也就是sitemap文件。这个文件的内容是没有自动生成的,今天我们来看一下怎么去生成sitemap文件,并每天保持更新。
引入扩展包
composer require laravelium/sitemap
生成sitemap演示代码
下面贴一下我的代码给大家参考一下
public function sitemap()
{
// create new sitemap object
$sitemap = App::make("sitemap");
$sitemap->setCache('laravel.sitemap', 60);
$time = date('Y-m-d H:i:s',time());
$sitemap->add("https://www.5aizhuanqian.com", $time, 1.0, 'daily');
$sitemap->add("https://www.5aizhuanqian.com/app.html", $time, 0.9, 'daily');
$sitemap->add("https://www.5aizhuanqian.com/news.html", $time, 0.9, 'daily');
$apps = Apps::where(['status'=>1])->get()->toArray();
foreach ($apps as $k => $v) {
$sitemap->add(route('app.info',['slug'=>$v['slug']]), $time, 0.7, 'daily');
}
$news = News::where(['status'=>1])->get()->toArray();
foreach ($news as $k => $v) {
$sitemap->add(route('news.info',['slug'=>$v['slug']]), $time, 0.7, 'daily');
}
$categories = Category::where(['status'=>1])->get()->toArray();
foreach ($categories as $k => $v){
$sitemap->add(route('app.list',['slug'=>$v['slug']]), $time, 0.8, 'daily');
}
$news_categories = NewsCategory::where(['status'=>1])->get()->toArray();
foreach ($news_categories as $k => $v){
$sitemap->add(route('news.list',['slug'=>$v['slug']]), $time, 0.8, 'daily');
}
$xml = $sitemap->render('xml');
$path=public_path()."\sitemap.xml";
$path=str_replace('\\','/',$path);
file_put_contents($path,$xml->getContent());
return;
}
可能稍微有点冗长,我觉得全都放上来可能更容易理解一点。
调用这个方法就可以生成一个文件到 public/sitemap.xml 了,那么怎么去每天保持更新呢,可以参考我之前写过的定时任务的文章 laravel项目定时任务的使用
设定每天执行一次,handle函数中调用这个方法就可以啦。