sitemap xml文件生成

sitemap xml生成方法


<?php
/**
 * SitemapService.php.
 *
 * 生成sitemap
 */

class Sitemap
{
    public $newLine = "\n";
    public $indent = " ";
    public $xmlHeader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
    public $urlsetOpen = "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"
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\">\n";
    public $urlsetValue = "";
    public $urlsetClose = "</urlset>\n";

    public $rootUrl = "";
    public function __construct($rootUrl = "https://www.xxx")
    {
        if (empty($rootUrl)) {
            $rootUrl = "https://www.xxx";
        }
        $this->rootUrl = $rootUrl;
    }

    private function makeUrlString ($urlString) {
        return htmlentities($urlString, ENT_QUOTES|ENT_XML1, 'UTF-8');
    }

    /**
     * 返回格式: 2019-02-01T12:40:05+00:00
     * 参数格式: 2019-02-01 12:40:05
     * @param $dateTime
     * @return bool|string
     */
    private function makeIso8601TimeStamp ($dateTime) {
        if (!$dateTime) {
            $dateTime = date('Y-m-d H:i:s');
        }
        if (is_numeric(substr($dateTime, 11, 1))) {
            $isoTS = substr($dateTime, 0, 10) ."T"
                .substr($dateTime, 11, 8) ."+00:00";
        } else {
            $isoTS = substr($dateTime, 0, 10);
        }
        return $isoTS;
    }

    private function makeUrlTag ($url, $modifiedDateTime, $changeFrequency, $priority) {
        $newLine = $this->newLine;
        $indent = $this->indent;

        $urlOpen = "$indent<url>$newLine";
        $urlClose = "$indent</url>$newLine";
        $locOpen = "$indent$indent<loc>";
        $locClose = "</loc>$newLine";
        $lastmodOpen = "$indent$indent<lastmod>";
        $lastmodClose = "</lastmod>$newLine";
        $changefreqOpen = "$indent$indent<changefreq>";
        $changefreqClose = "</changefreq>$newLine";
        $priorityOpen = "$indent$indent<priority>";
        $priorityClose = "</priority>$newLine";

        $urlTag = $urlOpen;
        $urlValue = $locOpen .$this->makeUrlString($url) .$locClose;
        if ($modifiedDateTime) {
            $urlValue .= $lastmodOpen .$this->makeIso8601TimeStamp($modifiedDateTime) .$lastmodClose;
        }
        if ($changeFrequency) {
            $urlValue .= $changefreqOpen .$changeFrequency .$changefreqClose;
        }
        if ($priority) {
            $urlValue .= $priorityOpen .$priority .$priorityClose;
        }
        $urlTag .= $urlValue;
        $urlTag .= $urlClose;
        return $urlTag;
    }

    /**
     * 验证是否符合url格式
     * url format: /xxx|lastmod|changefreq|priority
     *
     * @param $pageLine
     * @return bool
     */
    private function validateEntry ($pageLine) {
        $page = explode("|", $pageLine);
        $url = trim($page[0]);
        $processLine = TRUE;
        if (substr($url, 0, 1) != "/") {
            $processLine = FALSE;
        }
        return $processLine;
    }

    /**
     * 获取待生成的链接
     * url format: /xxx|lastmod|changefreq|priority
     *
     * @return array
     */
    private function getUrls()
    {
        $lastmod = date('Y-m-d H:i:s');
        $changefreq = "daily";
        $priority_index = "1.0";
        $priority_category = "0.8";
        $priority_details = "0.5";
        $pageList = [];
        $pageList[] = "/|$lastmod|$changefreq|$priority_index";
        // 添加自己的网站url
        $pageList[] = "/ranking|$lastmod|$changefreq|$priority_category";
        return $pageList;
    }

    /**
     * 生成sitemap文件
     */
    public function generate()
    {
        $pageList = $this->getUrls();
        foreach($pageList as $pageLine) {
            $processLine = $this->validateEntry ($pageLine);
            $page = explode("|", $pageLine);
            $url = trim($page[0]);
            if ($processLine) {
                $this->urlsetValue .= $this->makeUrlTag ($this->rootUrl .$url, trim($page[1]),   trim($page[2]), trim($page[3]));
            }
        }
        return $this->xmlHeader . $this->urlsetOpen . $this->urlsetValue . $this->urlsetClose;
    }
}

/**
 * 1. Sitemap 构造方法,默认的rootUrl 修改为待整理的网站域名
 * 2. Sitemap getUrls方法,添加自己网站的url
 * 3. 调用Sitemap时,rootUrl的参数修改
 */

$rootUrl = "";
$sitemap = new Sitemap($rootUrl);
$xml_data = $sitemap->generate();
header('Content-type: application/xml; charset="utf-8"');
echo $xml_data;

参考链接

谷歌帮助文档
sitemap xml格式
谷歌seo优化

原文地址:https://www.cnblogs.com/fanfan259/p/10373537.html

时间: 2024-11-09 02:52:35

sitemap xml文件生成的相关文章

帝国CMS如何自动生成sitemap.xml文件

登录网站的后台http://你的域名/e/admin/ 进入后台栏目 =>增加自定义页面 => 内容填写如下: <?='<?xml version="1.0" encoding="UTF-8"?>'?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>[!--news.url--]

Android(java)学习笔记185:xml文件生成

1.xml文件: 用元素描述数据,跨平台. 2.利用传统的方式创建xml文件,下面是一个案例: 设计思路:建立一个学生管理系统,创建xml文件保存学生信息: (1)首先是布局文件activity_main.xml文件,如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

XML文件生成的几个步骤

1.得到xml序列化器 XmlSerializer serializer = Xml.newSerializer(); 2.确定要生成的xml文件的存放的位置,将流对象对应到文件存储的位置 File file = new File(Environment.getExternalStorageDirectory(), "backup.xml"); FileOutputStream os = new FileOutputStream(file); 3.设定xml序列化器的输入流对象和编码格

xml文件生成

准备一批数据,先不说标注有多些麻烦吧,生成xml文件费了些功夫.但是还好,解决的比较快.就是细节的东西太伤人,当时生成xml文件时,是用python做的,当时看到了生成的xml文件有<xml version ****>等等这样的开头信息,我当时也注意到了,这和标准数据给的xml文件时不一样的,但是测试时用python测试的,读xml文件时没问题的,也就没有深究有这个开头的信息是否可以去掉的问题,模型训练也成功了.当然,训练模型时读xml文件也是用的python,开头的那些信息并不影响的.但是,

WebAPI使用多个xml文件生成帮助文档

一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet.WebApi.HelpPage)可以根据注释生成帮助文档,查看代码实现会发现是基于解析项目生成的xml文档来作为数据源从而展示出来的.在我们的项目帮助文档需要的类(特指定义的Request和Response)与项目在同一个项目时是没有问题的,但是我们实际工作中会因为其他项目也需要引用该(Request和Response)时,我们会将其抽出来单独作为一个项目供其它调用来引用,这时,查看帮助文档不会报

【转】WebAPI使用多个xml文件生成帮助文档

来自:http://www.it165.net/pro/html/201505/42504.html 一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet.WebApi.HelpPage)可以根据注释生成帮助文档,查看代码实现会发现是基于解析项目生成的xml文档来作为数据源从而展示出来的.在我们的项目帮助文档需要的类(特指定义的Request和Response)与项目在同一个项目时是没有问题的,但是我们实际工作中会因为其他项目也需要引用该(Reque

WebAPI使用多个xml文件生成帮助文档(转)

http://www.cnblogs.com/idoudou/p/xmldocumentation-for-web-api-include-documentation-from-beyond-the-main.html 一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet.WebApi.HelpPage)可以根据注释生成帮助文档,查看代码实现会发现是基于解析项目生成的xml文档来作为数据源从而展示出来的.在我们的项目帮助文档需要的类(特指定义的Req

XML文件生成——借助JDOM

1 import java.io.* ; 2 import org.jdom.* ; 3 import org.jdom.output.* ; 4 public class DOMDemo { 5 public static void main(String args[]) throws Exception { 6 Element addresslist = new Element("addresslist") ; 7 Element linkman = new Element(&qu

sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml

Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页.最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间.更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智能地抓取网站. 目前有两种格式 一.Google SiteMap <urlset xmlns=“网页列表地址”> <url> <loc>网址</loc> <lastmod>2005