发现更大的SEO世界
 找回密码
 注册
搜索
»首页»SEO培训 SEO论坛 SEO交流 帖子
发新帖
mr198345,请到个人资料页面设置个人签名    

【江湖救急】关于百度移动适配中代码适配的疑问

本帖最后由 mr198345 于 2015-6-11 11:41 编辑

我的网站的程序是wordpress,使用的主题有PC和MOBILE(即PC端访问使用PC主题,移动端访问使用MOBILE主题),我的网站PC页面和MOBILE页面的URL是一样的,但是源代码有所不同。结合站长平台给出的三种适配方式(跳转适配、代码适配和自适应)我认为应该采取代码适配的方式。根据教程有两个步骤:

①添加Vary HTTP标头;
② 并且在pc的响应的head中添加并且在pc的响应的head中添加
  <meta name="applicable-device" content="pc">
  在移动的响应的包头中添加
  <meta name="applicable-device" content="mobile">

其中第②步骤,我分别在自己主题的PC和MOBILE的header.php的</head>标签前写入了meta标注,这一点我做的很顺利。但是第①步骤”添加Vary HTTP标头“我不是很理解,
我看了官方给出的示例图片中是这么写的”vary:User-Agent“,而百度移动搜索官方课程中”代码适配如何对百度友好”中Vary HTTP标头的写法是“Vary:Accept-Encoding,User-Agent”。请问Vary HTTP标头写法采用哪个?


另外,我通过Firebug进行了抓取,我的网站响应头信息如下:
Connection:keep-alive
Content-Encoding:gzip
Content-Type:textml;  charset=UTF-8
Date:Thu, 11 Jun 2015 02:10:07 GMT
Server:nginx/1.0.15
Transfer-Encoding:chunked
Vary :Accept-Encoding
X-Powered-By:PHP/5.6.9

可以看出我的网站响应头信息中已经有了“Vary:Accept-Encoding” 请教技术大牛是否还需要添加Vary:Accept-Encoding,User-Agent”,如果必须添加,怎么添加,方法能说一下吗?

综述:我这个问题应该是代码适配中一个具有普遍代表性的问题,如果能给出详细解答和具体操作步骤,应该能帮助到很多站长朋友。

发表于 2015-6-11 11:39:00 |只看大图
回复 收藏
易初,请到个人资料页面设置个人签名    

部分理解供你参考:

1、vary写法应该是:Vary:Accept-Encoding,User-Agent
因为Accept-Encoding(压缩方式)不是重点,重点是ua(用户代理),Vary的意思是根据不同请求返回不同版本内容。

百度文档里有:

 为了使百度能够知道当您的页面发生变化时,同时需要用其他的ua重新抓取一遍,请您添加Vary HTTP标头。Vary HTTP 标头具有以下两个非常重要且实用的作用:
  a)        它会向 ISP 和其他位置使用的缓存服务器表明:在决定是否通过缓存来提供网页时它们应考虑用户代理。如果您没有使用 Vary HTTP 标头,缓存可能会错误地向移动设备用户提供pc版 HTML 网页的缓存(反之亦然)。
  b)        它有助于 百度spdier 更快速地发现针对移动设备进行优化的内容,这是因为我们在抓取针对移动内容进行过优化的网址时,会将有效的 Vary HTTP 标头作为抓取信号之一,我们会提高用其他ua抓取此网页的优先级


所以添加ua的目的是避免由于缓存给移动端返回pc端内容,以及让百度了解这个站是根据不同ua返回不同内容的。

2、添加方法应该是在.htaccess中添加代码,具体怎么添加我就不知道了,可以google、百度,成功之后希望可以分享一下。
发表于 2015-6-11 15:36:37
回复 收藏
linduo20,请到个人资料页面设置个人签名    

本帖最后由 linduo20 于 2015-6-11 15:50 编辑

加。
修改nginx的server配置添加

add_header Vary User-Agent;

百度站长社区
发表于 2015-6-11 15:48:07
回复 收藏
mr198345,请到个人资料页面设置个人签名    

易初 发表于 2015-6-11 15:36
部分理解供你参考:

1、vary写法应该是:Vary:Accept-Encoding,User-Agent

我尝试了.htaccess的写法
<IfModule mod_headers.c>
Header set Vary "Accept-Encoding,User-Agent"
</IfModule>
没有生效
 楼主| 发表于 2015-6-11 17:32:32
回复 收藏
mr198345,请到个人资料页面设置个人签名    

linduo20 发表于 2015-6-11 15:48
加。
修改nginx的server配置添加
nginx的server配置添加
这个在哪里配置?
 楼主| 发表于 2015-6-11 17:33:36
回复 收藏
mr198345,请到个人资料页面设置个人签名    

linduo20 发表于 2015-6-11 15:48
加。
修改nginx的server配置添加

我使用的WDCP面板,找到了/www/wdlinux/nginx-1.0.15/conf文件夹中的naproxy.conf,内容如下:
proxy_connect_timeout 60s;
proxy_send_timeout   600;
proxy_read_timeout   90;
proxy_buffer_size    128k;
proxy_buffers     8 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 100m;
proxy_redirect     off;
proxy_hide_header  Vary;
proxy_set_header   Accept-Encoding '';
proxy_set_header   Host   $host;
proxy_set_header   Referer $http_referer;
proxy_set_header   Cookie $http_cookie;
proxy_set_header   X-Real-IP  $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;


其中proxy_set_header命令意思是输出 header
我加入了proxy_set_header   Vary: Accept-Encoding,User-Agent ;
结果还是没有反应
 楼主| 发表于 2015-6-11 18:01:02
回复 收藏
mr198345,请到个人资料页面设置个人签名    

linduo20 发表于 2015-6-11 15:48
加。
修改nginx的server配置添加


我使用的WDCP面板,找到了/www/wdlinux/nginx-1.0.15/conf/vhost文件夹下面的  我的域名.conf
添加了add_header Vary User-Agent;
使用firebug查看得到了
Vary         Accept-Encoding,  User-Agent(多了一个空格)

使用HTTP Headers Check Tool查看得到了以下:
Array
(
    [0] => HTTP/1.1 200 OK
    [Server] => nginx/1.0.15
    [Date] => Thu, 11 Jun 2015 10:28:00 GMT
    [Content-Type] => text/html; charset=UTF-8
    [Connection] => close
    [Vary] => Array
        (
            [0] => Accept-Encoding
            [1] => User-Agent
        )


    [X-Powered-By] => PHP/5.6.9
    [X-Pingback] => 我的域名/xmlrpc.php
    [Content-Length] => 4999
)
 楼主| 发表于 2015-6-11 18:38:00
回复 收藏
linduo20,请到个人资料页面设置个人签名    

mr198345 发表于 2015-6-11 18:38
我使用的WDCP面板,找到了/www/wdlinux/nginx-1.0.15/conf/vhost文件夹下面的  我的域名.conf
添加了add_ ...

你要是apache就好了。可以配置.htaccess。nginx用的比较少,你找找看有没有nginx.conf,通常在nginx安装目录下conf。试试、或者研究下ngx_http_headers_module模块是否可以添加
发表于 2015-6-12 09:03:40
回复 收藏
mr198345,请到个人资料页面设置个人签名    

本帖最后由 mr198345 于 2015-6-12 18:17 编辑

[我找到了网站 nginx文件 在我的域名.com.conf里面加入了

add_header Vary User-Agent;

重启nginx后,使用firebug抓取了一下,响应头如下:
Cache-Control: no-cache, must-revalidate, max-age=0
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html; charset=UTF-8
Date: Thu, 11 Jun 2015 13:54:39 GMT
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Pragma: no-cache
Server: nginx/1.0.15
Transfer-Encoding: chunked
Vary: Accept-Encoding, User-Agent
X-Powered-By: PHP/5.6.9
按照官方PPT中所讲,我们百度站长社区是代码适配典型性网站,我也抓取了一下,响应头如下:
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 7935
Content-Type: text/html; charset=utf-8
Date: Thu, 11 Jun 2015 13:56:38 GMT
Keep-Alive: timeout=5, max=100
Server: Apache
Set-Cookie: 2m4h_2132_lastact=1434030998%09forum.php%09; expires=Fri, 12-Jun-2015 13:56:38 GMT; path=/
2m4h_2132_sid=YFeEE7; expires=Fri, 12-Jun-2015 13:56:38 GMT; path=/
Vary: Accept-Encoding,User-Agent

如果不仔细看以为是一样的,仔细一看就会发现,我的网站响应头Vary: Accept-Encoding, User-Agent在逗号前面多了一个空格。然后问题出现了,我使用HTTP Headers Check Tool抓取了我的网站和百度站长社区,出现如下对比:

我的网站:
Array
(
    [0] => HTTP/1.1 200 OK
    [Server] => nginx/1.0.15
    [Date] => Thu, 11 Jun 2015 14:01:32 GMT
    [Content-Type] => text/html; charset=UTF-8
    [Connection] => close
   [Vary] => Array
        (
            [0] => Accept-Encoding
            [1] => User-Agent
        )


    [X-Powered-By] => PHP/5.6.9
    [Content-Length] => 4999
)

百度站长社区,如下:
Array
(
    [0] => HTTP/1.1 200 OK
    [Date] => Thu, 11 Jun 2015 14:04:30 GMT
    [Server] => Apache
    [Set-Cookie] => Array
        (
            [0] => 2m4h_2132_saltkey=e42TeUO4; expires=Sat, 11-Jul-2015 14:04:30 GMT; path=/; httponly
            [1] => 2m4h_2132_lastvisit=1434027870; expires=Sat, 11-Jul-2015 14:04:30 GMT; path=/
            [2] => 2m4h_2132_sid=CT2heU; expires=Fri, 12-Jun-2015 14:04:30 GMT; path=/
            [3] => 2m4h_2132_lastact=1434031470%09forum.php%09; expires=Fri, 12-Jun-2015 14:04:30 GMT; path=/
            [4] => 2m4h_2132_onlineusernum=602; expires=Thu, 11-Jun-2015 14:09:30 GMT; path=/
            [5] => 2m4h_2132_sid=CT2heU; expires=Fri, 12-Jun-2015 14:04:30 GMT; path=/
        )

    [Vary] => Accept-Encoding,User-Agent
    [Connection] => close
    [Content-Type] => text/html; charset=utf-8
)

vary 部分我标红了,那么问题来了,我这样设置对了吗,如果有错误,如何去掉逗号前面的空格。麻烦帮助一下,不胜感谢!
 楼主| 发表于 2015-6-12 17:57:28
回复 收藏
linduo20,请到个人资料页面设置个人签名    

mr198345 发表于 2015-6-12 17:57
[我找到了网站 nginx文件 在我的域名.com.conf里面加入了

add_header Vary User-Agent;

空格应该没影响的。至于为什么你用http headers check tool 抓取出现了那个情况表示不清楚。实在抱歉。问了下程序员,测试用在ngx_headers_more模块添加more_set_headers -s 200 "Vary: " "Accept-Encoding, User-Agent";是可以的。

评分

参与人数 1赞同 +1 收起 理由
mr198345 + 1 很给力!

查看全部评分

发表于 2015-6-15 14:48:02
回复 收藏
快速回复 返回顶部 返回列表