我们平时所说的网站地图大多数都是 XML 地图,这个绝大多数 XML 地图都是针对 PC 端网页,而几乎从未关注过移动端 XML 地图,特别是响应式站点。所以今天我们就来跟大家说一说如何纯代码制作响应式 WordPress 站点地图,让其同时适用于 PC 端和移动端。PS:国内好像只有百度有移动 Sitemap 协议,所以本文所制作的 XML 地图就是百度专用。
什么是移动 Sitemap 协议?
百度推出了移动 Sitemap 协议,用于将网址提交给移动搜索收录。百度移动 Sitemap 协议是在标准 Sitemap 协议基础上制定的,增加了<mobile:mobile/>标签,它有四种取值:
- <mobile:mobile/> :移动网页
- <mobile:mobile type=”mobile”/> :移动网页
- <mobile:mobile type=”pc,mobile”/>:自适应网页
- <mobile:mobile type=”htmladapt”/>:代码适配
- 无该上述标签表示为PC网页
从上面的<mobile:mobile/>标签取值得知,我们是响应式站点,那么只需要在我们传统的 XML 地图上添加<mobile:mobile type=”pc,mobile”/>标签即可。
制作含有<mobile:mobile type=”pc,mobile”/>标签的XML地图
1、制 作sitemap_mob.php 文件。将下面的代码放到一个单独的PHP文件里并命名为 sitemap_mob.php,上传至网站根目录,使用浏览器访问该文件,如能正常打开并确认里面的网页链接及标签无误后即可。
- <?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 ‘<urlset xmlns=“http://www.sitemaps.org/schemas/sitemap/0.9” xmlns:mobile=“http://www.baidu.com/schemas/sitemap-mobile/1/”>’
- ?>
- <!– generated-on=<?php echo get_lastpostdate(‘blog’); ?>–>
- <url>
- <loc><?php echo get_home_url(); ?></loc>
- <mobile:mobile type=“pc,mobile”/>
- <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
- $myposts = get_posts( “numberposts=” . $posts_to_show );
- foreach( $myposts as $post ) { ?>
- <url>
- <loc><?php the_permalink(); ?></loc>
- <mobile:mobile type=“pc,mobile”/>
- <lastmod><?php the_time(‘c’) ?></lastmod>
- <changefreq>monthly</changefreq>
- <priority>0.6</priority>
- </url>
- <?php } ?>
- <?php
- $mypages = get_pages();
- if(count($mypages) > 0) {
- foreach($mypages as $page) { ?>
- <url>
- <loc><?php echo get_page_link($page->ID); ?></loc>
- <mobile:mobile type=“pc,mobile”/>
- <lastmod><?php echo str_replace(” “,“T”,get_page($page->ID)->post_modified); ?>+00:00</lastmod>
- <changefreq>weekly</changefreq>
- <priority>0.6</priority>
- </url>
- <?php }} ?>
- <?php
- $terms = get_terms(‘category’, ‘orderby=name&hide_empty=0’ );
- $count = count($terms);
- if($count > 0){
- foreach ($terms as $term) { ?>
- <url>
- <loc><?php echo get_term_link($term, $term->slug); ?></loc>
- <mobile:mobile type=“pc,mobile”/>
- <changefreq>weekly</changefreq>
- <priority>0.8</priority>
- </url>
- <?php }} ?>
- <?php
-
- $tags = get_terms(“post_tag”);
- foreach ( $tags as $key => $tag ) {
- $link = get_term_link( intval($tag->term_id), “post_tag” );
- if ( is_wp_error( $link ) )
- return false;
- $tags[ $key ]->link = $link;
- ?>
- <url>
- <loc><?php echo $link ?></loc>
- <mobile:mobile type=“pc,mobile”/>
- <changefreq>monthly</changefreq>
- <priority>0.4</priority>
- </url>
- <?php } ?>
- </urlset>
2、新增 sitemap_mob.xml 伪静态
①、Nginx 做法
在原来的伪静态位置新增规则:
- rewrite ^/sitemap_mob.xml$ /sitemap_mob.php last;
②、Apache 做法
在 .htaccess 中新增规则:
- RewriteRule ^(sitemap_mob)\.xml$ $1.php
保存后,在浏览器访问 http://yourname.com/sitemap_mob.xml 查看效果。
3、纯静态(伪静态和纯静态二选一)
这个 sitemap 每次重新生成都是一个耗能大户,很多人担心会被有心之人拿来作为攻击入口,所以这里就跟大家分享一个张戈一直在用的最简单的实现方法:Linux 定时任务+wget 定时生成 sitemap.xml
具体实现:将网站根目录的 sitemap.php 重命名为一个只有自己知道的 php 文件,比如 xml.php,然后定时使用 wget 去请求这个文件,并将数据保存为 sitemap.xml 存放到网站根目录就可以了!比如:
#每天凌晨1点在网站根目录生成一个 sitemap.xml(xml.php为自己重命名的php文件名称)
- 0 1 * * * wget -O /home/wwwroot/zhang.ge/sitemap.xml http://zhang.ge/xml.php >/dev/null 2>&1
这样一来,就解决了sitemap.xml是动态数据问题了!
至此,我们已经成功制作了一个同时适合百度PC端和移动端的网站地图,接下来的提交站点地图就不再展开说了。在这里,boke112 提醒大家,本文所说的这个 XML 地图仅适用于百度,其他国内搜索引擎好像尚未支持<mobile:mobile/>标签,所以其他搜索引擎不用提交本文所交的 XML 地图哦。
参考资料:
拓展阅读(谷歌移动Sitemap):
- <?xml version=“1.0” encoding=“UTF-8” ?>
- <urlset xmlns=“http://www.sitemaps.org/schemas/sitemap/0.9” xmlns:mobile=“http://google.com/schemas/sitemap-mobile/1.0”>
- <url>
- <loc>http://mobile.example.com/article100.html</loc>
- <mobile:mobile/>
- </url>
- </urlset>
请注意:
- 谷歌移动 Sitemap 只能包含支持移动网络内容的网址。Google 抓取机制将忽略任何只支持非移动网络内容的网址。如果有非移动内容,请为这些网址创建单独的 Sitemap。
- 如果<mobile:mobile/>标记丢失,我们就无法正确抓取您的移动网址。
- 各移动 Sitemap 应使用唯一名称。
本文地址:https://boke112.com/post/3854.html
版权声明:本文为原创文章,版权归 boke112百科 所有,欢迎分享本文,转载请保留出处!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请联系我们,确认后马上更正或删除,谢谢!