Gimhoy's Blog

百度云(BAE)上 WordPress生成Sitemap.xml / Sitemap.html的方法【谷歌站长工具报错问题已解决】

本文最后更新于2014年1月22日,已超过三年没有更新,如果文章内容失效,请反馈给我们,谢谢!

之前在改BCS-Support这个插件的时候,不少网友希望能够支持sitemap,但一直没有进展。参考这SAE上的Google Sitemap Generator和Baidu Sitemap Generator想移植到BAE上,但是BAE上的BCS和SAE上的Storage很不一样,一直修改不成功。也想过写一个PHP文件来获取动态内容,不过由于刚开始接触PHP和WordPress,能力有限,所以一直没有写出来。今天看到MoeSora 萌の空的博主已经把这个功能实现了,就直接拿过来用吧。

谷歌站长工具提示 An invalid date was found. Please fix the date or formatting before resubmitting.的问题已解决。

 

BAE上生成sitemap.xml

第1步.在根目录下创建 Sitemap.php 内容如下:(或者点击这里下载)

<?php
include 'includes/connection.php';
require('./wp-blog-header.php');
header("Content-type: text/xml");
header('HTTP/1.1 200 OK');
$posts_to_show = 1000; // 获取文章数量
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<?xml-stylesheet type="text/xsl" href="/sitemap.xsl"?>'; // XSL地址
echo '<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">';
?>
<!-- generated-on=<?php echo get_lastpostdate('blog'); ?> Modified Gimhoy(http://blog.gimhoy.com)-->
  <url>
      <loc><?php echo get_home_url(); ?></loc>
      <lastmod><?php $ltime = get_lastpostmodified(GMT);$ltime = gmdate('Y-m-d\TH:i:s+00:00', strtotime($ltime)); echo $ltime; ?></lastmod>
      <changefreq>daily</changefreq>
      <priority>1.0</priority>
  </url>
<?php
header("Content-type: text/xml");
$myposts = get_posts( "numberposts=" . $posts_to_show );
foreach( $myposts as $post ) { ?>
  <url>
      <loc><?php the_permalink(); ?></loc>
      <lastmod><?php the_time('c') ?></lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
  </url>
<?php } // end foreach ?>
</urlset>

第2步.将XSL文件下载到根目录下.

第3步.在 app.conf 中添加以下内容:

  - url : /sitemap.xml$
    script : /sitemap.php 
  - url : (.*)\.xsl$
    script : $1.xsl

需要注意的是,如果添加到 app.conf 最底部的话,可能会出现错误。建议放在所有 -url规则的前面。

 

BAE上生成sitemap.html

第1步.在根目录下创建 Sitemap_html.php 内容如下:(或者点击这里下载)

<?php
require('./wp-blog-header.php');
header("Content-type: text/html");
$posts_to_show = 1000; // 获取文章数量
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>站点地图 - <?php bloginfo( 'name' ); ?></title>
<meta name="keywords" content="站点地图,<?php bloginfo( 'name' ); ?>" />
<meta name="generator" content="SiteMap Generator" />
<meta name="author" content="Souma Hoshino" />
<meta name="copyright" content="moesora.com" />
<style type="text/css">
body {font-family:Verdana;FONT-SIZE:12px;MARGIN:0;color:#000000;background:#ffffff;}
img {border:0;}
li {margin-top:8px;list-style:none;}
.page {padding:4px;border-top:1px #EEEEEE solid}
.author {background-color:#EEEEFF;padding:6px;border-top:1px #ddddee solid}
#nav, #content, #footer {padding:8px;border:1px solid #EEEEEE;clear:both;width:95%;margin:auto;margin-top:10px;}
</style>
</head>
<body vlink="#333333" link="#333333">
<h2 style="text-align: center; margin-top: 20px"><?php bloginfo( 'name' ); ?> SiteMap </h2>
<center></center>
<div id="nav"><a href="<?php bloginfo('url'); ?>"><strong><?php bloginfo( 'name' ); ?></strong></a>  &raquo; <a href="<?php bloginfo('url'); ?>/sitemap.html">站点地图</a></div>
<div id="content1">
<h3>最新文章 RecentPosts</h3>
<ul>
<?php
$myposts = get_posts( "numberposts=" . $posts_to_show );
foreach( $myposts as $post ) { ?>
<li><span><?php the_time('[Y-m-d] ') ?><span><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>" target="_blank"><?php the_title(); ?></a></li>
<?php } // end foreach ?>
</ul>
</div><!--文章-->
<div id="content2">
<?php wp_list_categories('orderby=name&show_count=1&title_li=<h3>分类目录 Categories</h3>&depth=3'); ?>
</div><!--分类-->
<div id="content3">
<h3>页面 Pages</h3>
<ul><?php wp_list_pages('title_li=&depth=1'); ?></ul>
</div><!--页面-->
<div id="footer">浏览博客首页 <strong><a href="<?php bloginfo('url'); ?>"><?php bloginfo( 'name' ); ?></a></strong></div><br />
<center>
<div style="text-algin: center; font-size: 11px"><strong><a href="<?php bloginfo('url'); ?>/sitemap.xml" target="_blank">SiteMap.xml</a></strong> &nbsp;
Latest Update: <?php echo get_lastpostdate('blog'); ?><br /><br /></div>
</center>
<center>
<div style="text-algin: center; font-size: 11px">&copy; <?php echo date('Y'); ?> <?php bloginfo( 'name' ); ?> | Sitemap by <a href="http://blog.gimhoy.cn/" target="_blank" title="MoeSora">Gimhoy</a><br /><br /></div>
</center>
</body>
</html>

第2步.在 app.conf 中添加以下内容:

  - url : /sitemap.html$
 script : /sitemap_html.php


免费获得每月10G空间+10G免费流量
No tags
  • Comment (55)
  • Trackback (4)
  • chinaobd2Google ChromeWindowsChina2016/09/14 23:24@Ta

    不错

    #18
  • 发现特价游SouGou BrowserWindowsChina2015/11/21 17:25@Ta

    这个功能很好用啊,又方便又快捷,多谢了

    #17
  • WordPress主题Google ChromeWindowsChina2014/01/24 18:22@Ta

    谢谢,搞定。

    #16
  • 信念Google ChromeWindowsChina2013/10/16 17:55@Ta

    请教博主一个问题,sitemap.html配置和404是否有冲突?为什么添加了404规则,访问sitemap.html就跳404.

    #15
  • 信念Google ChromeWindowsChina2013/10/06 16:27@Ta

    要是添加一条404错误的规则,即:- errordoc : 404 script : /404 那直接访问sitemap.html会被引领到404页面。 请问如何解决这个冲突?

    #14
  • 优美文字网Mozilla FirefoxWindowsChina2013/09/21 22:15@Ta

    错误Error
    We encountered an error while trying to access your Sitemap. Please ensure your Sitemap follows our guidelines and can be accessed at the location you provided and then resubmit.
    1General HTTP error: 404 not found
    HTTP 错误: 404
    ---------------------------
    这个是谷歌报错的!咋办?

    #13
  • 多梦Google ChromeWindowsChina2013/09/06 12:01@Ta

    是不是用了伪静态不行?怎么总是提示404?

    #12
  • littleGoogle ChromeWindowsChina2013/08/23 13:15@Ta

    在百度提交sitemap.xml时候说 Xml格式错误

    #11
  • YangMozilla FirefoxWindowsChina2013/08/02 17:38@Ta

    主题好漂亮!! 🙄

    #10
  • PHP教程Mozilla FirefoxWindowsChina2013/08/02 15:03@Ta

    站长工具检查说百度地图是死链接

    #9
    • GimhoyGoogle ChromeWindowsChina2013/08/02 21:43@Ta

      能打开么

      • PHP教程Google ChromeWindowsChina2013/08/02 23:21@Ta

        @Gimhoy:可以打开,但是站长工具报死链接。应该不是误报,每次检测都说是死链接

        • GimhoyGoogle ChromeWindowsChina2013/08/02 23:34@Ta

          @PHP教程:那就不知道了~你都能打开它要报死链还能咋办?

        • GimhoyGoogle ChromeWindowsChina2013/08/04 13:30@Ta

          @PHP教程:谷歌站长工具提示 An invalid date was found. Please fix the date or formatting before resubmitting.的问题已解决。

  • aotxlandSouGou BrowserWindowsChina2013/07/19 10:21@Ta

    把这些代码加进去,然后再做什么

    #8
    • GimhoyGoogle ChromeWindowsChina2013/07/20 16:31@Ta

      @aotxland:根据文章一步一步做,不需要其他步骤。

      • aotxlandSouGou BrowserWindowsChina2013/07/22 11:42@Ta

        @Gimhoy:我得不行啊,出现了这个
        This page contains the following errors:

        error on line 1 at column 6: XML declaration allowed only at the start of the document
        Below is a rendering of the page up to the first error.
        这是网址:http://aotxland.duapp.com/sitemap.xml
        这个怎么解决阿

        • GimhoyGoogle ChromeWindowsChina2013/07/22 19:01@Ta

          这种情况一般是xml文件第一行空行

  • 曹耿Google ChromeWindowsChina2013/05/26 21:21@Ta

    你好,请问这个问题怎么解决啊。
    查看网站地图时提示:No input file specified,这个怎么解决啊
    能用QQ向你请教吗?

    #7
    • GimhoyGoogle ChromeWindowsChina2013/05/26 21:24@Ta

      PHP文件放进去了么? 传到BAE上了么? 建议参考本文从头开始重新试一次。

      • 曹耿Google ChromeWindowsChina2013/05/26 22:13@Ta

        放进去了,按照上面的步骤把Sitemap.php、XSL文件放到了网站根目录(和app.conf同级的目录。不是放到主题的目录下吧!),在app.conf也添加但是 访问站点地图时提示:No input file specified。还需要写调用代码吗?

        • GimhoyGoogle ChromeWindowsChina2013/05/27 00:33@Ta

          如果完全按照这个步骤来,应该没问题。。No input file specified应该是找不到php文件。。

          • 曹耿Google ChromeWindowsChina2013/05/27 13:18@Ta

            说找不到那个php文件啊,sitemap.php文件吗

            • GimhoyGoogle ChromeWindowsChina2013/05/27 19:33@Ta

              应该是的

              • 曹耿Google ChromeWindowsChina2013/05/27 22:13@Ta

                你是怎么做的啊

                • GimhoyGoogle ChromeWindowsChina2013/05/28 00:39@Ta

                  按照我文中说的做的啊

  • 曹耿Google ChromeWindowsChina2013/05/26 11:23@Ta

    查看网站地图时提示:No input file specified,这个怎么解决啊

    #6
  • 曹耿Google ChromeWindowsChina2013/05/25 10:08@Ta

    app.conf这个文件在哪里啊

    #5
    • GimhoyGoogle ChromeWindowsChina2013/05/25 10:14@Ta

      根目录下

      • 曹耿Google ChromeWindowsChina2013/05/25 10:35@Ta

        根目录没有啊

        • GimhoyGoogle ChromeWindowsChina2013/05/25 10:37@Ta

          那是不是有个bae.conf

      • 曹耿Google ChromeWindowsChina2013/05/25 10:37@Ta

        能详细说一下吗,亲

        • GimhoyGoogle ChromeWindowsChina2013/05/25 10:39@Ta

          你检出SVN之后,就会有啊

          • 曹耿Google ChromeWindowsChina2013/05/25 10:40@Ta

            哦,原来这样啊,谢谢您

  • OT时光Mozilla FirefoxWindowsChina2013/04/24 10:58@Ta

    百度的如何改??

    #4
  • ahyongGoogle ChromeMac OSChina2013/04/19 00:27@Ta

    确实可靠,赞

    #3
  • 寓言Google ChromeWindowsChina2013/04/18 15:30@Ta

    百度好像喜欢sitemap.html sitemap.html不知是否也可以通过这样调用动态的方式来实现?

    #2
    • GimhoyGoogle ChromeWindowsChina2013/08/04 13:30@Ta

      @寓言:sitemap.html也可以

  • 木铭Internet ExplorerWindowsChina2013/04/15 12:27@Ta

    大师,如果我用baidu xml genanator 的话,是不是可以获得这个插件生成的XML地图?不过我看了下代码,这个好像是取得最近发布的文章,循环取得文章的信息获得,这个是不是跟那些插件没有关系?

    #1
    • GimhoyGoogle ChromeWindowsChina2013/04/15 18:31@Ta

      对,跟插件没有关系。不需要安装插件,就可以生成xml站点地图。