代码适配的网站如何进行mip改造

作者

最近一个小站需要进行mip改造,网站是代码适配的网站。就是电脑访问返回电脑端的页面,手机端访问返回手机端的页面。网站的url是相同的。改造后在百度提供的在线验证工具中进行了测试,全部通过测试。然后在站长后台进行了提交。提交后大概等了半个月也没有通过校验,同时也没有错误的提示。


mip改造-通过子目录的形式
mip改造-通过子目录的形式

最后在百度的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/目录。

一条评论

回复

电子邮件地址不会被公开。