PHP生成Sitemap.xml网站地图文件的实现原理及代码

2023-04-2113:32:28后端程序开发Comments678 views字数 2369阅读模式

公司又上线了一个新的网站项目,我把生成sitemap.xml文件的工作交给了该项目的负责人,但是他之前并没有做过,所以就去百度上搜索别人的经验。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/36514.html

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

最后他为了快速解决这个工作任务,在快下班的时候跑去我的博客上也找了一遍,发现我也没有发布这方面的文章,于是就建议我写一篇文章发布到博客中,嗯~~~好像挺有道理!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/36514.html

下面就给大家具体介绍一下如何用PHP生成XML格式的Sitemap网站地图文件并实现自动化管理,这是目前为止我认为最佳的解决方案(中小站点)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/36514.html

一,PHP生成Sitemap.xml网站地图文件的实现原理。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/36514.html

原理其实很简单,就是字符串的拼装。先准备好文件中需要包含的网页链接地址,然后根据xml规范格式对这些地址进行拼装,最后使用file_put_contents()函数将文件输出到网站根目录。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/36514.html

二,PHP生成Sitemap.xml的具体案例及实现代码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/36514.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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网站地图文件?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/36514.html

我们使用上面的PHP代码成功生成sitemap文件以后是不是就完事了?其实并没有,因为Sitemap.xml文件是需要实时更新或者每天更新的,所以我们应该想一种自动化管理sitemap文件的解决方案。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/36514.html

我这边目前采用的缓存更新的方式,就是每次网站更新缓存的时候会同时更新sitemap文件,从而达到自动化管理的目的文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/36514.html

当然还有一种常用的解决方案是编写一个定时任务,每天固定时间去访问生成Sitemap的方法,从而实现自动化管理的目的文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/36514.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/36514.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定