之前在改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="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.sitemaps.org/schemas/sitemap/0.9 https://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">'; ?> <!-- generated-on=<?php echo get_lastpostdate('blog'); ?> Modified Gimhoy(https://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" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="https://www.w3.org/1999/xhtml"> <head profile="https://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> » <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> Latest Update: <?php echo get_lastpostdate('blog'); ?><br /><br /></div> </center> <center> <div style="text-algin: center; font-size: 11px">© <?php echo date('Y'); ?> <?php bloginfo( 'name' ); ?> | Sitemap by <a href="https://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
不错
这个功能很好用啊,又方便又快捷,多谢了
谢谢,搞定。
请教博主一个问题,sitemap.html配置和404是否有冲突?为什么添加了404规则,访问sitemap.html就跳404.
要是添加一条404错误的规则,即:- errordoc : 404 script : /404 那直接访问sitemap.html会被引领到404页面。 请问如何解决这个冲突?
错误 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
---------------------------
这个是谷歌报错的!咋办?
是不是用了伪静态不行?怎么总是提示404?
在百度提交sitemap.xml时候说 Xml格式错误
错误信息是什么?
@Gimhoy:
http://bcs.duapp.com/jiaoyang/blog/201308/QQ图片20130823133656.jpg
想起来了,百度跟谷歌的Sitemap格式不一样,所以报错是正常的。。
@Gimhoy:不知这格式错误是否影响到百度蜘蛛呢
不会,百度对xml格式的Sitemap似乎支持不好
主题好漂亮!! 🙄
站长工具检查说百度地图是死链接
能打开么
@Gimhoy:可以打开,但是站长工具报死链接。应该不是误报,每次检测都说是死链接
@PHP教程:那就不知道了~你都能打开它要报死链还能咋办?
@PHP教程:谷歌站长工具提示 An invalid date was found. Please fix the date or formatting before resubmitting.的问题已解决。
把这些代码加进去,然后再做什么
@aotxland:根据文章一步一步做,不需要其他步骤。
@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
这个怎么解决阿
这种情况一般是xml文件第一行空行
你好,请问这个问题怎么解决啊。
查看网站地图时提示:No input file specified,这个怎么解决啊
能用QQ向你请教吗?
PHP文件放进去了么? 传到BAE上了么? 建议参考本文从头开始重新试一次。
放进去了,按照上面的步骤把Sitemap.php、XSL文件放到了网站根目录(和app.conf同级的目录。不是放到主题的目录下吧!),在app.conf也添加但是 访问站点地图时提示:No input file specified。还需要写调用代码吗?
如果完全按照这个步骤来,应该没问题。。No input file specified应该是找不到php文件。。
说找不到那个php文件啊,sitemap.php文件吗
应该是的
你是怎么做的啊
按照我文中说的做的啊
查看网站地图时提示:No input file specified,这个怎么解决啊
app.conf这个文件在哪里啊
根目录下
根目录没有啊
那是不是有个bae.conf
能详细说一下吗,亲
你检出SVN之后,就会有啊
哦,原来这样啊,谢谢您
不客气
还是不行啊
给个链接我看看
我能加你的qq吗
http://wx.shanyuemeimei.com你帮忙看看把,谢谢
网站地图显示No input file specified.
sitemap.xsl 这个放在哪儿了?
放在根目录下啊,就是跟app.conf同一个目录
百度的如何改??
确实可靠,赞
感谢支持~
百度好像喜欢sitemap.html sitemap.html不知是否也可以通过这样调用动态的方式来实现?
@寓言:sitemap.html也可以
大师,如果我用baidu xml genanator 的话,是不是可以获得这个插件生成的XML地图?不过我看了下代码,这个好像是取得最近发布的文章,循环取得文章的信息获得,这个是不是跟那些插件没有关系?
对,跟插件没有关系。不需要安装插件,就可以生成xml站点地图。