laravel项目生成sitemap文件

原文链接 : 于高衡の博客

在做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函数中调用这个方法就可以啦。

猜你喜欢

转载自blog.csdn.net/weixin_39277674/article/details/102925747