如何用PHP生成XML格式的Sitemap网站地图文件并实现自动化管理?
下面就给大家具体介绍一下如何用PHP生成XML格式的Sitemap网站地图文件并实现自动化管理,这是目前为止我认为最佳的解决方案(中小站点)。
一,PHP生成Sitemap.xml网站地图文件的实现原理。
原理其实很简单,就是字符串的拼装。先准备好文件中需要包含的网页链接地址,然后根据xml规范格式对这些地址进行拼装,最后使用file_put_contents()函数将文件输出到网站根目录。
二,PHP生成Sitemap.xml的具体案例及实现代码。
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网站地图文件?
我们使用上面的PHP代码成功生成sitemap文件以后是不是就完事了?其实并没有,因为Sitemap.xml文件是需要实时更新或者每天更新的,所以我们应该想一种自动化管理sitemap文件的解决方案。
我这边目前采用的缓存更新的方式,就是每次网站更新缓存的时候会同时更新sitemap文件,从而达到自动化管理的目的。
当然还有一种常用的解决方案是编写一个定时任务,每天固定时间去访问生成Sitemap的方法,从而实现自动化管理的目的。
千行代码,Bug何处藏。 纵使上线又怎样,朝令改,夕断肠。