页面载入中,请稍后...

点我安装PWA
您已拒绝通知
    广告广告

    【php实现生成sitemap xml地图】

    qaq卟言2021-06-25 21:42:14 PHPSeo
    小人奔跑效果开始
    • php实现生成sitemap xml地图1.png
    • 之前向谷歌搜索引擎提交sitemap,后面发现谷歌使用的是xml不是html
    • 没法使用,于是想在网上要懒人工具爬取生成sitemapxml地图
    • 不要问我,为什么我博客没有xml地图,因为框架功能都是自己写的,没开发这个功能所以这个xml地图
    • 但是更新文章的话又要重新爬取上传xml地图,就很不方便,就打算写一个sitemapxml地图,方便搜索引擎提交收录
    • sitemap的最佳方式是随着内容的变化而变化,当内容变化的时候,sitemap自动重新生成
    • 既然需要生成xml,那就需要知道格式及规范说明
    • sitemap xml格式
    • <?xml version="1.0" encoding="UTF-8"?>
      <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
      <url>
      <loc>https://qaqbuyan.com:88/</loc>
      <lastmod>2020-08-01T00:00:00+08:00</lastmod>
      <changefreq>monthly</changefreq>
      <priority>1</priority>
      </url>
      </urlset>
    • sitemap xml规范
    • urlset用来标记整个文档的开头,必需
    • url标记每条信息的开始和结束,必需
    • loc该条数据的存放地址,最小长度1个字符,最大长度256个字符以http://或者https://开头,必需
    • lastmod指该条数据的最新一次更新时间,时间格式为ISO8601,可选
    • changefreq指该条数据的更新频率
    • 有效值为:alwayshourlydailyweeklymonthlyyearlynever,可选
    • priority用来指定此链接相对于其他链接的优先权比值,此值定于0.0-1.0之间,可选
    • sitemap xml要求
    • urlseturlloc都是必需的,另外就是防止乱码需要让XML文件以utf-8编码输出
    • 谈谈其他的一个Sitemap文件包含的网址不得超过5万个,且文件大小不得超过10MB
    • 我们新站可以忽略了,因为自己站点也没有这么多内链
    • PHP实现
    • 通过上面的要求实现代码,然后根据数据库的文章记录进行输出,这里截取我文章字段的样式图举例
    • php实现生成sitemap xml地图2.png
    • 根据规范,我们需要取出链接,标题,时间
    • <?php
        /*
        qaq卟言
        设计制作
        个人介绍
        https://qaqbuyan.com:88/关于乔安/
        qaq卟言的个人博客
        */
        //输出头,告诉他们这是一个xml文件
        header('Content-type: text/xml');
        //输出xml文件的编码为UTF-8以及单独的首页优先级
        echo '<?xml version="1.0" encoding="UTF-8"?> 
        <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
        <url>
        <loc>https://qaqbuyan.com:88/</loc>
        <lastmod>2020-08-01T00:00:00+08:00</lastmod>
        <changefreq>monthly</changefreq>
        <priority>1</priority>
        </url>';
        //连接数据库,这里忽略
        //查询数据库,这里未设置try,如果项目使用请加上。以倒序查询文章表
        $sql="select * from writings order by `id` desc";
        $smt=$pdo->prepare($sql);
        $smt->execute();
        $rows=$smt->fetchAll(PDO::FETCH_ASSOC);
        //判断$rows有没有数据
        if(!$rows){echo '<h1 style="color: #7D3C98;">没有数据!</h1>';} 
        //循环输出数据
        foreach($rows as $row){
        if($row['id']==count($rows)){$priority = '0.8';}else{$priority = '0.5';}// 判断是否为最后字段,是设置$priority为0.8,否则设置为0.5
        $row['time'] = new DateTime($row['time']);
        $row['time'] = $row['time']->format(DateTime::ATOM); // 格式化时间为ISO8601
        echo '<url>
        <!-- 输出数据,因为我的文章链接都是以数字id为链接的,所以写入格式为-https://qaqbuyan.com:88/乔安文章/id.html -->
        <loc>https://qaqbuyan.com:88/乔安文章/'.$row['id'].'.html</loc>
        <!-- 输出ISO8601的时间格式 -->
        <lastmod>'.$row['time'].'</lastmod>
        <!-- 输出更新频率默认为monthly就行了 -->
        <changefreq>monthly</changefreq>
        <!-- 输出通过判断$row['id']得到$priority的值 -->
        <priority>'.$priority.'</priority>
        </url>';
        }
        //循环结束,然后断开连接,以及输出脚注
        $pdo = null;
        echo '</urlset>';
    • 如果没有错误,那么输出应该跟后面的链接是一样的https://qaqbuyan.com:88/网站地图/sitemap
    • 写好了,重新向谷歌提交
    • php实现生成sitemap xml地图3.png
    完结

    🔖本文来源:qaq卟言的个人博客网站声明如损害你的权益请联系我们

    ©️版权声明:本文为【qaq卟言】原创文章,写作不易,转载请您添加本文链接,谢谢您的合作!

    📜著作协议:《知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

    ⚠️部分文章图片来自网络,可能存在版权问题。如发现相关争议请联系qaq卟言处理!

    🔗

    广告广告

    随机文章

    该文章已经关闭评论,评论请前往留言信箱