近一个小站需要进行mip改造,网站是代码适配的网站。就是电脑访问返回电脑端的页面,手机端访问返回手机端的页面。网站的url是相同的。改造后在百度提供的在线验证工具中进行了测试,全部通过测试。然后在站长后台进行了提交。提交后大概等了半个月也没有通过校验,同时也没有错误的提示。
后在百度的mip群里得到这样的回复
因为只有移动UA才返回mip页面,这样比较容易出现问题,我们技术小哥哥建议直接的解决办法是建立一个专用的页面,无论什么UA访问都返回MIP的页面
这样就知道问题出现在哪里的,同时也知道该怎么修改了。
代码适配mip改造的方法
因为代码适配相同网址的原因导致了失败。所以就要需要对mip页面提供单独的网址即可。常用的有两种方法
1. 子域名的方式,比如 mip.liuhaolin.com
2. 子目录的方式,比如 www.liuhaolin.com/mip/
方法很多,可以通过服务器重写+内容替换实现,也可以通过修改网站的程序实现。因为我改造的网站程序是用的wordpress,直接修改程序也比较简单。这里记录一下操作的步骤。
通过子目录的方式进行修改
改造的结果应该是,每个链接前面都增加一个 /mip, 比如 www.liuhaolin.com/about.html
改造后应该是 www.liuhaolin.com/mip/about.html
。同时应该做到返回的页面是 mip类型的页面。
需要解决的一个问题,网站的链接上增加的 /mip, 网页还是可以正常打开的问题。在模板的 functions.php
中添加
# 记录一下原始的uri, 用于判读这个页面是否是 mip url。
$origin_uri = $_SERVER['REQUEST_URI'];
# worpdress的路由是基于$_SERVER['REQUEST_URI'],这样 url 中的mip/ 就是透明的,不影响正常的执行。
$_SERVER['REQUEST_URI'] = str_replace('mip/', '', $_SERVER['REQUEST_URI']);
# 判断是否是一个mip页面
function is_mip() {
global $origin_uri;
return strpos($origin_uri , 'mip/') === 1;
}
对于详情页的链接改造
如果是 mip 就在链接上加上 /mip
add_filter('post_link', function ($link, $post = 0) {
if(is_mip()) {
$link = str_replace( home_url(), home_url() . '/mip', $link);
}
return $link;
});
对分类的链接的改造
如果是 mip 就在分类的链接上加上 /mip
add_filter('category_link', function ($termlink, $id) {
if(is_mip()) {
$link = str_replace( home_url(), home_url() . '/mip', $termlink);
}
});
其他的具体修改就和具体的代码有关系了,比如网站是如何适配的,就是如何加载不同的模板的。通过 is_mip
函数判断一下,如果是mip页面,就加载对应的mip页面。后处理一下细节,可以 robots.txt 添加禁用禁止抓取目录 /mip/
目录。
学习了!