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

评论

(= ̄ω ̄=)··· 暂无内容!

回复

您还未登录,请先登录或者注册