米扑科技的开源项目:sitemap-php 自动生成网站地图
米扑科技旗下的产品,近期正在做SEO网站优化,其中子需求之一是调研实现了网站地图(sitemap.xml)
封装简化了许多功能模块,现在分享出来,源代码可在Github上下载,有简单的示例。
Github 开源网址: sitemap-php
What is sitemap-php ?
sitemap-php 是一个轻量级、简单快速生成网站地图的开源项目,由北京米扑科技有限公司(mimvp.com)开发分享。
通过简单的配置定义,一个函数createSitemap(),可自动生成sitemap.xml、sitemap.html等网站地图文件,
自动生成的xml、html文件,支持Google、Bing、Baidu等主流搜索引擎收录。
Fast and lightweight class for generating Google sitemap XML files and index of sitemap files.
Written on PHP and uses XMLWriter extension (wrapper for libxml xmlWriter API) for creating XML files. XMLWriter extension is enabled by default in PHP 5 >= 5.1.2.
If you having more than 50000 url, it splits items to seperated files. (In benchmarks, 1.000.000 url was generating in 8 seconds)
示例:
sitemap.xml : http://mimvp.com/sitemap.xml
sitemap.html : http://mimvp.com/sitemap.html
How to use
Sitemap 封装了生成sitemap.xml的属性和方法的类,使用非常简单,示例代码:
function testSitemap() {
$sitemap = new Sitemap("http://mimvp.com"); $sitemap->addItem('/', '1.0', 'daily', 'Today');
$sitemap->addItem('/hr.php', '0.8', 'monthly', time());
$sitemap->addItem('/index.php', '1.0', 'daily', 'Jun 25');
$sitemap->addItem('/about.php', '0.8', 'monthly', '2017-06-26'); $sitemap->addItem('/hr2.php', '1.0', 'daily', time())->addItem('/index2.php', '1.0', 'daily', 'Today')->addItem('/about2.php', '0.8', 'monthly', 'Jun 25'); $sitemap->endSitemap();
}
- 初始化类对象
$sitemap = new Sitemap("http://mimvp.com");
- 添加Item
$sitemap->addItem('/', '1.0', 'daily', 'Today');
$sitemap->addItem('/hr.php', '0.8', 'monthly', time());
$sitemap->addItem('/index.php', '1.0', 'daily', 'Jun 25');
$sitemap->addItem('/about.php', '0.8', 'monthly', '2017-06-26');
或者
$sitemap->addItem('/hr2.php', '1.0', 'daily', time())->addItem('/index2.php', '1.0', 'daily', 'Today')->addItem('/about2.php', '0.8', 'monthly', 'Jun 25');
- 结束文档
$sitemap->endSitemap();
- 生成结果 sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://mimvp.com/</loc>
<priority>1.0</priority>
<changefreq>daily</changefreq>
<lastmod>2017-06-26T00:00:00+08:00</lastmod>
</url>
<url>
<loc>http://mimvp.com/hr.php</loc>
<priority>0.8</priority>
<changefreq>monthly</changefreq>
<lastmod>2017-06-26T20:16:23+08:00</lastmod>
</url>
<url>
<loc>http://mimvp.com/index.php</loc>
<priority>1.0</priority>
<changefreq>daily</changefreq>
<lastmod>2017-06-25T00:00:00+08:00</lastmod>
</url>
<url>
<loc>http://mimvp.com/about.php</loc>
<priority>0.8</priority>
<changefreq>monthly</changefreq>
<lastmod>2017-06-26T00:00:00+08:00</lastmod>
</url>
</urlset>
More Functions
- 设置根域名
$sitemap = new Sitemap("http://mimvp.com");
也可以修改初始化的域名为
$sitemap->setDomain('http://blog.mimvp.com');
- 设置保存路径 sitemap.xml默认保存在当前目录下,也可设置文件夹目录,例如: xmls/sitemap,表示sitemap.xml保存在当前目录下的xmls/目录下,其中xmls目录会自动创建。注:支持多级目录
$sitemap->setXmlFile("xmls/sitemap");
$sitemap->setXmlFile("xmls/mimvp/sitemap");
- 设置是否更多头部
$sitemap->setIsChemaMore(true);
如果设置为true,则sitemap.xml文件头部会增加一些头部信息:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
- 获取当前写入的sitemap文件
$sitemap->getCurrXmlFileFullPath();
Advanced Functions
- 指定包含文件,以/开头
$GIncludeArray = array("", "/index.php", "about.php", "hr.php");
- 排除特定文件或目录
$GExcludeArray = array("usercenter/", "sadmin/", "admin/", "sitemap.php");
- 递归扫描指定目录,默认扫描三层(可自己设定)
function scanRootPath($rootPath=".", $dirLevel=1, $MaxDirLevel=3, &$resArray=array())
- 转化 xml + xsl 为 html
function createXSL2Html($xmlFile, $xslFile, $htmlFile, $isopen_htmlfile=false)
Sitemap Demo
- 全局变量,G开头
$GCONFIG = array( "domain"=>"http://mimvp.com",
"xmlfile"=>"sitemap",
"htmlfile"=>"sitemap.html",
"xslfile"=>"sitemap-xml.xsl",
"isopen_xmlfile"=>true,
"isopen_htmlfile"=>true,
"isscanrootpath"=>true,
"isxsl2html"=>true,
"isschemamore"=>true);
- 生成sitemap.xml
createSitemap();
生成示例:
- 生成 sitemap.html
createXSL2Html($xmlFile, $xslFile, $htmlFile, $isopen_htmlfile=false);
生成示例:
You need to submit sitemap.xml and sitemap.html to Google、 Bing、 Baidu,etc.
sitemap-php项目,目前支持指定网页、排除网页、扫描根目录等网站地图;
后期完善时,会增加导出数据库、爬取整个网站等功能,
也希望您的加入,继续完善此项目
sitemap-php All Rights by mimvp.com
米扑科技的开源项目:sitemap-php 自动生成网站地图的更多相关文章
- 讲解开源项目:用 Python 生成有“灵魂”的二维码
本文作者:HelloGitHub-LITTLECHIEH 这是 HelloGitHub 推出的<讲解开源项目>系列,今天给大家推荐一个 Python 开源生成二维码的项目--qrcode ...
- 开源项目使用 appveyor 自动构建
我写了几个开源项目,我想要有小伙伴提交的时候自动运行单元测试,自动运行编译,这样可以保证小伙伴提交清真的代码 本文将会告诉大家如何接入 appveyor 自动构建方案,在 Github 上给自己的开源 ...
- Go 语言,开源服务端代码自动生成 框架 - EasyGoServer
EasyGoServer 作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblog ...
- sphinx:python项目文档自动生成
Sphinx: 发音: DJ音标发音: [sfiŋks] KK音标发音: [sfɪŋks] 单词本身释义: an ancient imaginary creature with a lion's bo ...
- 泰晓科技 +兰大开源社区 +程序动态分析---LINUX内核网站
http://www.tinylab.org/ http://linux-talents.tinylab.org/lzuoss/ http://www.tinylab.org/source-code- ...
- 开源:C# 代码自动生成工具,支持站点前后台
前言 写这个项目有很长一段时间了,期间也修修改改,写到最后,自己也没咋用(研究方向变化了). 正文 具体项目开源了:https://github.com/supperlitt/WebAutoCodeO ...
- Discuz开源论坛本地部署自动生成数据库
这个版本可能比较有点老,但是万变不离其宗,再新的版本都是在已有的基础上更新的,所以掌握方法是最重要的! 先上几张安装成功后的图 (安装成功的论坛首页) (后台管理登录页) 下面说一下安装步骤 第一步: ...
- maven项目使用mybatis-generator自动生成代码
1.添加mybatis-generator插件,打开pom.xml文件 在project节点下添加: <build> <plugins> <!-- MyBatis代码生成 ...
- 在idea中,mavne项目使用mybatis-generator-maven-plugin自动生成实体了的时候,在maven插件里面始终不显示
最近想学习mybatis的知识,自己搭了个简单的ssm框架,想通过插件自动生成实体类,发现想要的插件一直都没显示出来,着实很郁闷: pom.xm中的配置: <!--mybatis-generat ...
随机推荐
- 并发编程(三):从AQS到CountDownLatch与ReentrantLock
一.目录 1.AQS简要分析 2.谈CountDownLatch 3.谈ReentrantLock 4.谈消费者与生产者模式(notfiyAll/wait.si ...
- Javascript 类继承
Js继承 JavaScript并不是真正面向对象的语言,是基于对象的,没有类的概念. 要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现 /** 声明一个基础父类 ...
- Spring中对资源的读取支持
Resource简单介绍 注:所有操作基于配置好的Spring开发环境中. 在Spring中,最为核心的部分就是applicationContext.xml文件,而此配置文件中字符串的功能发挥到了极致 ...
- JavaBean规范
JavaBean规范 (1)JavaBean 类必须是一个公共类,并将其访问属性设置为 public ,如: public class user{ …}(2)JavaBean 类必须有一个空的构造函 ...
- Eclipse简单插件开发-启动时间提示
1.新建Plug-in Project 不用改其他选项,直接点击"Next",然后点击"Finish" 2.新建ShowTime.java package ...
- MySQL主从复制的实现过程
一.什么是主从复制 将主数据库中的DDL和DML操作通过二进制日志(BINLOG)传输到从数据库上,然后将这些日志重新执行(重做):从而使得从数据库的数据与主数据库保持一致. 二.主从复制的作用 1. ...
- Java之StringBuffer,StringBuilder,Math,Date,SimpleDateFormat,UUID,File
java.lang 类 StringBuffer java.lang.Object java.lang.StringBuffer 所有已实现的接口: Serializable, Appendable, ...
- (转)Java线程:大总结
Java线程:大总结 Java线程是Java语言中一个非常重要的部分,Java5之前,多线程的语言支持还是比较弱的,内容也较少,写一个复杂的多线程程序是相当有挑战性的. 在Java5以后,Ja ...
- linux查看是否安装Apache,mysql,python等
1.Apache httpd -v service httpd start 启动 service httpd restart 重新启动 service httpd stop 停止服务 2.mysql ...
- ubuntu解压乱码
乱码原因 问题一般出现在windows下压缩的在ubuntu中会出现这种情况. 其实就是windows和ubuntu下压缩的编码格式不同.windows下的编码格式为GBK,Ubuntu下的为UTF- ...