什么是网站xml地图?网站地图对于SEO非常重要,在网站中加入网站地图有利于搜索引擎蜘蛛的抓取和收录。怎样生网站地图?我们可以通过SEO管理工具或者网站地图在线生成工具,但每次都通过SEO工具去抓取生成网站地图,
什么是网站xml地图?
网站地图对于SEO非常重要,在网站中加入网站地图有利于搜索引擎蜘蛛的抓取和收录。
怎样生网站地图?
我们可以通过SEO管理工具或者网站地图在线生成工具,但每次都通过SEO工具去抓取生成网站地图,这样很麻烦,现在教大家另一种方法,使用以下方法生成xml地图,该方法会在网站更目录生成sitemap.xml地图,生成标准的网站地图格式,然后我们在后台点击下更新即可更新网站地图。
控制器Site.php文件代码:
<?php
namespace app\admin\controller;
use think\Controller;
// 网站地图
class Site extends Base
{
public function sitemapxml(){
$today = date("Y-m-d",time());
$article=db('article')->field('id,note_cate')->where(array('hide'=>0))->select();
$domain="https://www.tpxhm.com";
$data_array=array(); //文章列表
foreach($article as $k=>$v){
$data_array[$k]['loc'] = $domain.'/art/.$v['id'].'.html';
$data_array[$k]['lastmod'] = $today;
$data_array[$k]['changefreq'] = 'always';
$data_array[$k]['priority'] = '0.8';
}
$all=$data_array;
$content="<?xml version='1.0' encoding='UTF-8'?>".chr(13)."\n";
$content.="<?xml-stylesheet type='text/xsl' href='sitemap.xsl'?>\n";
$content.="<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9' xmlns:mobile='http://www.baidu.com/schemas/sitemap-mobile/1/'>\n";
foreach($all as $data){
$content.=$this->create_item($data);
}
$content.='</urlset>';
//halt($content);
$fp=fopen('sitemap.xml','w+');
fwrite($fp,$content);
fclose($fp);
if($fp){
return json(['code'=>200,'msg'=>'更新成功','data'=>'/sitemap.xml']);
}
}
public function create_item($data){
$item="<url>\n";
$item.="<mobile:mobile type='pc,mobile'/>\n";
$item.="<loc>".$data['loc']."</loc>\n";
$item.="<lastmod>".$data['lastmod']."</lastmod>\n";
$item.="<changefreq>".$data['changefreq']."</changefreq>\n";
$item.="<priority>".$data['priority']."</priority>\n";
$item.="</url>\n";
return $item;
}
}
?>
sitemap.xsl样式文件
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XML Sitemap</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body {font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana;font-size:13px;}
h1 {color:#0099CC;}
#intro {background-color:#CFEBF7;border:1px #2580B2 solid;padding:5px 13px 5px 13px;margin:10px;}
#intro p {line-height:16.8667px;}
td {font-size:11px;}
th {text-align:left;padding-right:30px;font-size:11px;}
tr.high {background-color:whitesmoke;}
#footer {padding:2px;margin:10px;font-size:8pt;color:gray;}
#footer a {color:gray;}
a {color:black;}
</style>
</head>
<body>
<h1>XML Sitemap</h1>
<div id="intro">
<p>
This is a XML Sitemap which is supposed to be processed by search engines like <a href="http://www.google.com">Google</a>, <a href="http://search.msn.com">MSN Search</a> and <a href="http://www.yahoo.com">YAHOO</a>.<br />
With such a sitemap, it's much easier for the crawlers to see the complete structure of your site and retrieve it more efficiently.</p>
</div>
<div id="content">
<table cellpadding="5">
<tr style="border-bottom:1px black solid;">
<th>URL</th>
<th>Priority</th>
<th>Change Frequency</th>
<th>Last Change</th>
</tr>
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:for-each select="sitemap:urlset/sitemap:url">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:variable name="itemURL">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a href="{$itemURL}">
<xsl:value-of select="sitemap:loc"/>
</a>
</td>
<td>
<xsl:value-of select="concat(sitemap:priority*100,'%')"/>
</td>
<td>
<xsl:value-of select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/>
</td>
<td>
<xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/>
</td>
</tr>
</xsl:for-each>
</table>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
生成的xml格式:
<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type='text/xsl' href='sitemap.xsl'?>
<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9' xmlns:mobile='http://www.baidu.com/schemas/sitemap-mobile/1/'>
<url>
<mobile:mobile type='pc,mobile'/>
<loc>https://www.tpxhm.com/</loc>
<lastmod>2020-10-12</lastmod>
<changefreq>always</changefreq>
<priority>1</priority>
</url>
<url>
<mobile:mobile type='pc,mobile'/>
<loc>https://www.tpxhm.com/f.html</loc>
<lastmod>2020-10-12</lastmod>
<changefreq>always</changefreq>
<priority>0.9</priority>
</url>
</urlset>
效果预览展示:https://www.tpxhm.com/sitemap.xml
沃梦达教程
本文标题为:ThinkPHP5生成网站xml地图方法
基础教程推荐
猜你喜欢
- laravel ORM关联关系中的 with和whereHas用法 2023-03-02
- PHP中的错误及其处理机制 2023-06-04
- PHP命名空间简单用法示例 2022-12-01
- php array分组,PHP中array数组的分组排序 2022-08-01
- thinkphp3.2.3框架动态切换多数据库的方法分析 2023-03-19
- 使用PHP开发留言板功能 2023-03-13
- laravel 解决多库下的DB::transaction()事务失效问题 2023-03-08
- PHP实现Redis单据锁以及防止并发重复写入 2022-10-12
- 在Laravel中实现使用AJAX动态刷新部分页面 2023-03-02
- PHP获取MySQL执行sql语句的查询时间方法 2022-11-09