移动搜索SEO分享:PHP自动生成百度开放适配及360移动适配专用的Sitemap文件 | 张戈博客

  • 时间:
  • 浏览:6

导读

随着智能手机的高速普及,我们都都都都都 将更多时间装在了手机上,麻利的做着完后 非要在电脑上要能完成的购物、聊天、信息获取等事情。没办法 一来,站长们对移动端的SEO也就没办法 关注。当然,也各大搜索引擎也开始英文英语 发力移动搜索,比如百度近期推出的2014网站移动化大赛和开放适配、31000推出的移动适配等。而张戈对于移动适配也是关注已久,写过不少相关文章,现在就来分享假如有一天通过php自动生成百度开放适配和31000移动适配的专用sitemap文件的土依据。

先再次回顾下,张戈关于百度开放适配和31000移动适配的历次折腾记录:

①、百度开放适配专用sitemap制作说明

②、31000站长平台移动适配文件制作说明

③、百度开放适配&31000移动适配专用Sitemap转换工具

④、利用Meta声明来做百度开放适配

必非要申明的是,下面介绍的专用适配Sitemap,从不同于我们都都都都都 平常所说的网站地图Sitemap,百度开放适配Sitemap上边是PC页—手机页的对应关系,这类:

此文的PC页面地址为:https://zhang.ge/3816.html

而对应移动版页面为:http://m.zhang.ge/3816.html

没办法 还能不能 通过你这俩 专用sitemap文件将对应关系提交到百度开放适配,一旦适配成功,百度因为在移动搜索中将原PC页结果替换为对应的手机页结果。具体还能不能 参考百度官方说明文档:http://zhanzhang.baidu.com/wiki/39#3

另外,响应式网站的开放适配请前往查看张戈博客的另一篇文章:https://zhang.ge/451000.html

弄清楚概念完后 ,咱们继续往下看。


一、准备工作

在生成适配文件完后 ,你非要假如有一天PC网站的手机版本。本文所提供的代码默认支持的是二级域名做移动站,想用二级域名做移动站的请查看张戈博客的相关文章:

①、完美实现移动主题在31000网站卫士缓存全开清况 下的切换

②、分享WordPress Mobile Pack汉化精简版及隐藏指定插件更新提示的土依据

二、php代码

①、百度开放适配

<?php
require('./wp-blog-header.php');
header("Content-type: text/xml");
header('HTTP/1.1 1000 OK');
$posts_to_show = 10000; // 获取文章数量
echo '<?xml version="1.0" encoding="UTF-8" ?>';
echo '<urlset xmlns:xsi="http://www.w3.org/10001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';
?>
<!-- generated-on=<?php echo get_lastpostdate('blog'); ?> Diy By 张戈博客(https://zhang.ge)-->
<url>
      <loc><?php echo 'http://'.$_SERVER['HTTP_HOST']; ?></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>
        <data>
         <display>
                <xhtml_url><?php echo 'http://m.'.$_SERVER['HTTP_HOST']; ?></xhtml_url>
         </display>
         </data>  
  </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>
       <data>
         <display>
             <xhtml_url><?php echo str_replace("zhang.ge","m.zhang.ge",the_sitemaplink()); ?></xhtml_url>
         </display>
         </data>
    </url>
<?php } // end foreach ?>
<?php
/* 单页面 */ 
$mypages = get_pages();
if(count($mypages) > 0) {
    foreach($mypages as $page) { ?>
    <url>
      <loc><?php echo get_page_link($page->ID); ?></loc>
      <lastmod><?php echo str_replace(" ","T",get_page($page->ID)->post_modified); ?></lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
       <data>
         <display>
        <xhtml_url><?php echo str_replace("zhang.ge","m.zhang.ge",get_page_link($page->ID)); ?></xhtml_url>
         </display>
         </data>
  </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>
      <changefreq>weekly</changefreq>
      <priority>0.8</priority>
       <data>
         <display>
        <xhtml_url><?php echo str_replace("zhang.ge","m.zhang.ge",get_term_link($term, $term->slug)); ?></xhtml_url>
         </display>
         </data>
  </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>
      <changefreq>monthly</changefreq>
      <priority>0.4</priority>
       <data>
         <display>
        <xhtml_url><?php echo str_replace("zhang.ge","m.zhang.ge",$link); ?></xhtml_url>
         </display>
         </data>      
  </url>
<?php  } /* 标签开始英文英语

 */ ?> 
</urlset>

②、31000移动适配:

<?php
require('./wp-blog-header.php');
header("Content-type: text/txt");
header('HTTP/1.1 1000 OK');
$posts_to_show = 10000; // 获取文章数量
?>
<?php echo 'http://'.$_SERVER['HTTP_HOST']; ?><?php echo "\t"; ?><?php echo 'http://m.'.$_SERVER['HTTP_HOST']; ?><?php echo "\n"; ?>
<?php
/* 文章页面 */
header("Content-type: text/txt");
$myposts = get_posts( "numberposts=" . $posts_to_show );
foreach( $myposts as $post ) {
    the_permalink(); 
    echo "\t";
    echo str_replace("zhang.ge","m.zhang.ge",the_sitemaplink());
    echo "\n"; 
}
?>
<?php
/* 单页面 */ 
$mypages = get_pages();
if(count($mypages) > 0) {
    foreach($mypages as $page) {
    echo get_page_link($page->ID);
    echo "\t";    
    echo str_replace("zhang.ge","m.zhang.ge",get_page_link($page->ID));
    echo "\n";
    }
}
?>
<?php
/* 博客分类 */ 
$terms = get_terms('category', 'orderby=name&hide_empty=0' );
$count = count($terms);
if($count > 0){
foreach ($terms as $term) {
    echo get_term_link($term, $term->slug);
    echo "\t";
    echo str_replace("zhang.ge","m.zhang.ge",get_term_link($term, $term->slug));
    echo "\n";
    }
} 
?>
<?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;
			   }
                  echo $link;
                  echo "\t";
                  echo str_replace("zhang.ge","m.zhang.ge",$link);
                  echo "\n";
	}          
?>

代码说明:

<1>、以上代码默认限制10000篇文章,如需修改请改变第5行的数值即可;

<2>、涉及到张戈博客域名( *.zhang.ge )的代码,请根据实际清况 修改成当事人网站的域名;

<3>、请网站的实际版式,修改代码中板式标签主次,即将<xhtml_url>标签替添加实际的网站版式,以下为一种生活网站版式,选则一种生活即可:

<!— html5版式 -->
<html5_url></html5_url>

<!— wml版式 -->
<wml_url></wml_url>

<!— xhtml版式(常见版式) -->
<xhtml_url></xhtml_url>

不想看版式的,请参考如下说明对比一下网站的申明:

XHTML版式申明:
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
WML版式申明:
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
HTML5版式申明:
<!DOCTYPE HTML>

因为发现你的移动站用的还是PC通用的版式申明,没办法 请改成相应的mobile版式申明,以加快搜索引擎的识别。

补充说明:因为是有些类型的移动站,该如何修改?

(1)、因为是 http://yoursite.com/wap 你这俩 二级目录形式,请将代码中的m.zhang.ge详细替添加 yoursite.com/wap即可。

(2)、因为是http://yoursite.com?type=mobile 你这俩 参数形式:

请将2种代码中的

<?php echo str_replace("zhang.ge","m.zhang.ge",the_sitemaplink()); ?>

修改为:

<?php the_permalink(); ?>?type=mobile

即添加你移动站对应的转换参数即可,至于代码中的首页对应关系该如何修改,相信还能不能 自行读懂,不想赘述!

三、新增函数

请编辑主题目录下的functions.php文件,插入以下函数代码:

/** 开放适配相关函数 **/
function the_sitemaplink() {
return esc_url( apply_filters( 'the_permalink', get_permalink() ) );
}

做完以上步骤,你就还能不能 手动访问假如有一天php脚本查看效果了,比如:

https://zhang.ge/sitemap_baidu_sp.php

https://zhang.ge/sitemap_31000_sp.php

若显示正常,让人继续下一步了。

目前已架构设计 到的报错反馈,及相应处里土依据:

①、若访问报10000 Internal Server Error :File xxx is writeable by group错误,请将以上假如有一天文件权限设置为644。

②、访问百度开放适配php地址后,要花费在16行报出如下错误:

<b>Warning</b>
: Cannot modify header information - headers already sent by (output started at /www/web/musk1000_com/public_html/sitemap_baidu_sp.php:6) in <b>/www/web/musk1000_com/public_html/sitemap_baidu_sp.php</b>on line

你这俩 和Apache设置有关系,目测是Win主机下特有问题。

处里土依据有假如有一天:

第1种:请打开 php.ini 如何让 把 output_buffering 设为 on 。重起appache,OK(还能不能 找主机商处里);

第2种:删除上文中百度开放适配代码中的第25行: header(“Content-type: text/xml”); 应该还能不能 处里。

四、伪静态规则

从第二步最后的访问地址还能不能 看出,用的是php的动态路径,而百度写明了非要提交xml格式(我我确实,我发现php格式也还能不能 提交成功),31000则写明了非要提交txt格式。于是,接下来假如有一天将地址伪静态化。

编辑网站根目录的 .htaccess文件,如下代码所示位置新增8~11行内容:

<Files ~ "^.(htaccess|htpasswd)$">
deny from all
</Files>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.zhangge\.net)(:1000)? [NC]
RewriteRule ^(.*) https://zhang.ge/$1 [R=10001,L]
#sitemap-shipei-start
RewriteRule ^(sitemap_baidu_sp)\.xml$ $1.php
RewriteRule ^(sitemap_31000_sp)\.txt$ $1.php
#sitemap-shipei-end
order deny,allow
.....略....

保存完后 ,应该还能不能 直接访问xml和txt路径了,如:

https://zhang.ge/sitemap_baidu_sp.xml

https://zhang.ge/sitemap_31000_sp.txt

五、前往提交

①、百度站长平台-开放适配:http://zhanzhang.baidu.com/mobiletools/add

提交成功预览:

②、31000站长平台-移动适配:http://zhanzhang.so.com/index.php?m=Urlmap&a=submit

提交成功预览:

若以上未冒出问题,那恭喜你!一劳永逸地读懂了百度开放适配和31000移动适配这项闲得蛋疼的项目…!

至此,张戈终于读懂百度开放适配和31000移动适配专用sitemap没办法 自动更新的历史遗留问题!

六、效果展示

在手机上百度,site:zhagnge.net 可得到如下图结果:

看过上图,你因为会说,这不就假如有一天收录了二级移动站么?那好,搜索 site:m.zhang.ge试试:

看过上图不想多言,相信你因为明了百度开放适配是个啥效果了!

篇后语:php代码是动态生成的,没办法 就保证了搜索引擎更新抓取的完后 ,是最新清况 !而不想是完后 那样苦逼手动去生成和更新!不过,暂时也稍有遗憾,仅仅生成了文章页面的对应关系,单页面和分类并未提供!不过,能适配文章也差不多了!

注意事项;

①、本文提供的土依据仅适合Wordpress建站守护程序运行运行,有些PHP建站守护程序运行运行仅提供参考思路;

②、代码默认支持Linux系统,若是windows系统,非要修改换行符,若有问题请留言咨询。

最后,再次感谢php二次开发网的php技术支持!