|  在技术加营销的道路上越走越远
温馨提示
我是弹窗内容
当前位置:首页 > PHP经验积累 > 如何用PHP生成XML格式的Sitemap网站地图文件并实现自动化管理?
如何用PHP生成XML格式的Sitemap网站地图文件并实现自动化管理?

如何用PHP生成XML格式的Sitemap网站地图文件并实现自动化管理?

日期:2021-08-10 浏览量:607 原创作者:湖八爷
作为一个懂一些SEO知识的PHP程序员,每次开发完一个新网站,上线后必须要做的一件事情就是生成sitemap.xml网站地图文件,然后到百度站长后台,谷歌站长后台等各大站长后台,把这个sitemap.xml网站地图文件主动提交给搜索引擎,帮助搜索引擎更加智能地抓取网站内容和收录网站页面。

最近公司又上线了一个新的网站项目,我把生成sitemap.xml文件的工作交给了该项目的负责人,但是他之前并没有做过,所以就去百度上搜索别人的经验。

尝试了很多百度上别人分享出来的解决方案,比如使用sitemap在线生成工具的方式,手动拼装sitemap的方式,整站链接采集的方式,利用simpleXML类生成的方式,甚至还尝试了使用JS生成的方式,但是这些百度排名靠前的解决方案却并不是靠谱的解决方案,大多数都是一些鸡肋文章,没什么实用价值,实操性很差。


最后他为了快速解决这个工作任务,在快下班的时候跑去我的博客上也找了一遍,发现我也没有发布这方面的文章,于是就建议我写一篇文章发布到博客中,嗯~~~好像挺有道理!


下面就给大家具体介绍一下如何用PHP生成XML格式的Sitemap网站地图文件并实现自动化管理,这是目前为止我认为最佳的解决方案(中小站点)。



一,PHP生成Sitemap.xml网站地图文件的实现原理。

原理其实很简单,就是字符串的拼装。先准备好文件中需要包含的网页链接地址,然后根据xml规范格式对这些地址进行拼装,最后使用file_put_contents()函数将文件输出到网站根目录。



二,PHP生成Sitemap.xml的具体案例及实现代码。


public function xmlmap() {
    $xml = '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL;
    $xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'.PHP_EOL;

    $xml .= '<url>'.PHP_EOL;
    $xml .= '<loc>https://www.hubaye.com</loc>'.PHP_EOL;//网站首页地址
    $xml .= '<lastmod>'.date('Y-m-d').'</lastmod>'.PHP_EOL;
    $xml .= '<changefreq>always</changefreq>'.PHP_EOL;
    $xml .= '<priority>1.0</priority>'.PHP_EOL;
    $xml .= '</url>'.PHP_EOL;

    $essay_type_cache = cache('essay_type');//从缓存中获取文章类别数据
    foreach($essay_type_cache as $v) {
        $xml .= '<url>'.PHP_EOL;
        $xml .= '<loc>https://www.hubaye.com/'.$v['route_tag'].'/</loc>'.PHP_EOL;//拼接文章列表页链接地址
        $xml .= '<lastmod>'.date('Y-m-d').'</lastmod>'.PHP_EOL;
        $xml .= '<changefreq>always</changefreq>'.PHP_EOL;
        $xml .= '<priority>0.9</priority>'.PHP_EOL;
        $xml .= '</url>'.PHP_EOL;
    }

    $essay_list = db('essay')->where('display', 1)->field('id,type,create_time')->order('create_time desc')->select();//获取数据库所有能展示的文章数据
    foreach($essay_list as $v) {
        $xml .= '<url>'.PHP_EOL;
        $xml .= '<loc>https://www.hubaye.com/'.$essay_type_cache[$v['type']]['route_tag'].'/post/'.$v['id'].'.html</loc>'.PHP_EOL;//拼接文章链接地址
        $xml .= '<lastmod>'.dgmDate($v['create_time'], 'Y-m-d').'</lastmod>'.PHP_EOL;
        $xml .= '<changefreq>daily</changefreq>'.PHP_EOL;
        $xml .= '<priority>0.8</priority>'.PHP_EOL;
        $xml .= '</url>'.PHP_EOL;
    }

    $xml .= '</urlset>';
    file_put_contents("./xmlmap.xml", $xml);//输出xmlmap文件到网站根目录
}



三,如何自动化管理Sitemap.xml网站地图文件?

我们使用上面的PHP代码成功生成sitemap文件以后是不是就完事了?其实并没有,因为Sitemap.xml文件是需要实时更新或者每天更新的,所以我们应该想一种自动化管理sitemap文件的解决方案。

我这边目前采用的缓存更新的方式,就是每次网站更新缓存的时候会同时更新sitemap文件,从而达到自动化管理的目的

当然还有一种常用的解决方案是编写一个定时任务,每天固定时间去访问生成Sitemap的方法,从而实现自动化管理的目的