专栏首页张戈的专栏php自动生成百度开放适配PC页-手机页pattern对应关系sitemap.xml

php自动生成百度开放适配PC页-手机页pattern对应关系sitemap.xml

以前做百度开放适配一直是提交普通的 url 对应关系,这种方式有个缺点,就是必须每个页面的 url 关系都得兼顾,即有多少就得提交多少。

然而,很多网站并不是 WordPress 建站,所以以往我提供的 php 代码也无法满足所有网站的需求。遇到这种难题,其实百度也提供了另一种关系提交——PC 页-手机页 pattern 对应关系。

这种对应关系的优点在于,每一种 url 形式只需要提交一组具备正则对应关系的 xml 数据结构即可。

一、文章关系

对应文章页面,我的博客是%post_id%.html 的格式,剩下的也只是 PC 域名和移动域名的对应关系,所以文章页面pattern 对应关系可如下提交:

<url>
    <loc>http://zhangge.net</loc>
    <lastmod>2014-10-14T09:49:59+00:00</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <data>
      <display>
        <pc_url_pattern>http://zhangge.net/(\d+).html</pc_url_pattern>
        <xhtml_url_pattern>http://m.zhangge.net/${1}.html</xhtml_url_pattern>
      </display>
    </data>
</url>

这样一组对应关系的提交,即可完成网站所有文章的百度开放适配。

二、分类关系

同样的,按照上面的对应结构,可以轻而易举的写出 wordpress 分类的 pattern 对应关系:

<url>
    <loc>http://zhangge.net</loc>
    <lastmod>2014-10-14T09:49:59+00:00</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <data>
      <display>
        <pc_url_pattern>http://zhangge.net/(\w+)</pc_url_pattern>
        <xhtml_url_pattern>http://m.zhangge.net/${1}</xhtml_url_pattern>
      </display>
    </data>
</url>

这 2 组 pattern 对应关系就能完成我博客的所有页面的开放适配,简单吧?!

三、关系组合

按照 xml 的格式,将上述 2 组关系组合在一起,保存为 sitemap_pn.xml 文件,就可以去百度开放适配提交了:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">
<url>
    <loc>http://zhangge.net</loc>
    <lastmod>2014-10-14T09:49:59+00:00</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <data>
      <display>
        <pc_url_pattern>http://zhangge.net/(\d+).html</pc_url_pattern>
        <xhtml_url_pattern>http://m.zhangge.net/${1}.html</xhtml_url_pattern>
        </display>
     </data>
</url>
<url>
    <loc>http://zhangge.net</loc>
    <lastmod>2014-10-14T09:49:59+00:00</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <data>
      <display>
        <pc_url_pattern>http://zhangge.net/(\w+)</pc_url_pattern>
        <xhtml_url_pattern>http://m.zhangge.net/${1}</xhtml_url_pattern>
      </display>
    </data>
</url>
</urlset>

四、php 代码

眼尖的朋友,应该发现了,xml 中的时间是写死的,这样会不会有问题就不知道了。看来还是弄个动态的时间比较靠谱,于是写了一个 php 代码如下:

<?php
header("Content-type: text/xml");
header('HTTP/1.1 200 OK');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">'
?>
  <url>
      <loc><?php echo 'http://'.$_SERVER['HTTP_HOST']; ?></loc>
      <lastmod><?php echo $showtime=date("Y-m-d\TH:i:s+00:00");?></lastmod>
      <changefreq>daily</changefreq>
      <priority>1.0</priority> 
      <data>
        <display>
            <pc_url_pattern>http://zhangge.net/(\d+).html</pc_url_pattern>
            <xhtml_url_pattern>http://m.zhangge.net/${1}.html</xhtml_url_pattern>
        </display>
      </data>
    </url>
    
  <url>
      <loc><?php echo 'http://'.$_SERVER['HTTP_HOST']; ?></loc>
      <lastmod><?php echo $showtime=date("Y-m-d\TH:i:s+00:00");?></lastmod>
      <changefreq>daily</changefreq>
      <priority>1.0</priority> 
      <data>
        <display>
            <pc_url_pattern>http://zhangge.net/(\w+)</pc_url_pattern>
            <xhtml_url_pattern>http://m.zhangge.net/${1}</xhtml_url_pattern>
        </display>
      </data>
    </url>    
</urlset>

这样,百度抓取的时候,时间也就是博客最后更新的时间了,而非写死的时间。最后,将以上代码保存为 sitemap_pn.php 文件并上传到网站根目录。

五、提交关系

每个在百度站长平台验证过的网站都具备百度开放适配的权限。

直接打开数据提交地址:http://zhanzhang.baidu.com/mobiletools/add 提交这个 php 文件的地址即可:

如果没有出现编码错误,基本上就可以通过了:

显示数量为 2 ,因为文件只提交了 2 组 pattern 对应关系。

六、拓展阅读

上文其实是想告诉大家,如果你的网站不好生成 url 对应关系的 sitemap,可以写一个 pattern 级别的 sitemap,将网站的对应关系,按照 pattern 格式分组列出即可,而无需苦恼动态脚本。

注意事项:

①、pattern 对应关系涉及的正则表达式,百度官方已说明只支持数字正则(\d+)和数字字母组合的(\w+);

具体可以参考上文的 pattern 对应关系或者百度给出的范例:http://zhanzhang.baidu.com/site/format?id=388

②、不要使用记事本编写相关代码,xml 的编码问题会非常蛋疼,推荐用 EditPlus 等工具来编写;

③、根据实际情况正确选择网站版式:<xhtml_url_pattern>、<wml_url_pattern>、<html5_url_pattern>。

④、企业网站若有需要,张戈博客可提供有偿适配服务:50 元/次,包括 xml、META 申明等。

关于开放适配的教程写到这就全部结束了,我会找个时间整理总结一个终结篇,方便有需要的人查看,敬请期待。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Wordpress安全架构分析

    WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统。WordPress具有插件架构和模板系统。Alexa排行前100万的网站中...

    Seebug漏洞平台
  • 【专业技术】PHP对战Node.js

    整个故事正如好莱坞大片的经典剧情走向:两位昔日好友如今分道扬镳,甚至被迫陷入了你死我活的斗争当中。刚开始的分歧并不严重,无非是一位老友对于另一位伙伴长久以来占据...

    程序员互动联盟
  • Java和PHP在Web开发方面的比较

    比较PHP和JSP这两个Web开发技术,在目前的情况是其实是比较PHP和Java的Web开发。以下是我就几个主要方面进行的比较: 一、 语言比较   PHP是...

    奋斗蒙
  • 总结nmon的诸多优点 (r4笔记第78天)

    nmon在平时的工作中可能会多多少少接触到,从sourceforge上能够下载到nmon的包。可能是有着IBM的血统,这个工具对于AIX的支持力度要大得多。 当...

    jeanron100
  • 想看爱奇艺VIP视频?一个python脚本帮你搞定

    一、实战背景 爱奇艺的VIP视频只有会员能看,普通用户只能看前6分钟。比如奇门遁甲的URL:http://www.iqiyi.com/v_19rrfnf1gk....

    机器学习AI算法工程
  • 治愈各种胡思乱想的清单!

    假期结束了,应该很多小伙伴都已经开工了,新的一年你有什么计划,下面小编整理了一份治愈胡思乱想的清单,希望能帮你在胡思乱想的这条道路上一去不回头!!!

    思梦php
  • 数据库常见的图形工具有哪些?

    疑惑一 MySQL常用的图形化管理工具有哪些? 现在随着PHP+MySql越来越火,周边相关产品也受到众多人的关注。在PC上修改数据库,查看数据库内容是研发人员...

    程序员互动联盟
  • XSS分析及预防

    XSS(Cross Site Scripting),又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行。在WEB前端应用日益发展的今天,XSS漏洞尤其容...

    欲休
  • 如果每一种语言都对应一种女生,你会喜欢哪一个?

    这几天调试都很顺利,今天很意外的不要加班,哥几个看着窗外还是白天,还有点不适应。没想到哥几个突然开始YY: 如果每种语言都对应一种女生, 你会喜欢哪一个? 程...

    机器学习AI算法工程
  • 学会了C语言,能开发什么?

    看招聘职位要C语言的比例真不多了,是不是C语言真的过时了? 看看很多招聘网站有关找纯粹的C语言开发的比例真的不是很多,都被Java,php,python等等语言...

    程序员互动联盟

扫码关注云+社区

领取腾讯云代金券