返回顶部
关闭软件导航
位置:首页 > 资讯 > 电商资讯>阿里云cdn做了之后手机站和电脑站无法正常切换的解决方案
阿里云cdn做了之后手机站和电脑站无法正常切换的解决方案

网上有非常多的解决方法,其中阿里云官方的方法是增加Vary:User-Agent来让CDN进行区分缓存:

可以通过设置Vary头来区分移动和pc端自适应。

cdn可以根据vary头信息来判定是否缓存相同的url带有不同的头信息的请求。

所以可以在源站返回的请求头上加上Vary:User-Agent这个字段,cdn就会对携带不同User-Agent做不同的缓存的。达到User-Agent这个头信息能到达源站。

nginx可以在server里面加上

add_headerVary''Accept-Encoding,User-Agent'';

实现增加Vary:User-Agent这个字段的效果。

所以,我们围绕这个进行设置:

1.Apache环境网站配置Vary:User-Agent

将以下代码根据实际情况加入对应网站根目录的.htaccess文件中,或者加入Apache的主配置文件httpd.conf:

HeaderappendVaryUser-Agent

2.Nginx环境网站配置Vary:User-Agent

将以下代码添加到对应站点的配置文件中:

add_headerVary"User-Agent";

3.PHP站点配置Vary:User-Agent

将以下代码添加到你PHP网站的合适位置,很好是属于公共文件,例如数据库配置文件中:

4.WordPress站点配置Vary:User-Agent

将以下代码添加到当前WordPress主题的functions.php文件中:

//WordPress配置Vary:User-Agent

add_filter('wp_headers','add_vary_header');

functionadd_vary_header($headers){

$headers['Vary']='User-Agent';

return$headers;

}

其他PHP程序也可以参照这样设置。

我们以PHP程序为例(这是永易搜CMS中的判定手机电脑的代码):

functionis_mobile(){

//判定手机发送的客户端标志,兼容性有待提高

if(isset($_SERVER['HTTP_USER_AGENT'])){

$userAgent=$_SERVER['HTTP_USER_AGENT'];

if(strpos($userAgent,'iPhone')||strpos($userAgent,'iPad')||strpos($userAgent,'iPod')||strpos($userAgent,'iOS')){

returntrue;

}

if(isset($_SERVER['HTTP_X_WAP_PROFILE'])){

returntrue;

}

阿里云cdn做了之后手机站和电脑站无法正常切换的解决方案1

$clientkeywords=array('nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile');

if(preg_match('/('.implode('|',$clientkeywords).')/i',strtolower($_SERVER['HTTP_USER_AGENT']))){

returntrue;

}

}

//协议法,因为有可能不正确,放到很后判定

if(isset($_SERVER['HTTP_ACCEPT'])){

//假如只支持wml并且不支持html那一定是移动设备

//假如支持wml和html但是wml在html之前则是移动设备

if(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==false&&(strpos($_SERVER['HTTP_ACCEPT'],'text/html')===false||strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')< strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))) {

returntrue;

}

}

//假如via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息

if(isset($_SERVER['HTTP_VIA'])){

returnstristr($_SERVER['HTTP_VIA'],'wap')?true:false;

}

returnfalse;

}

切记,网上有关于HTTP_VIA放在很前边进行判定的程序,实际上是不行的,后来永易搜CMS进行了改良,给VIA放到很后判定,才可以实现。

如果您觉得 阿里云cdn做了之后手机站和电脑站无法正常切换的解决方案 这篇文章对您有用,请分享给您的好友,谢谢
文章地址:https://www.tianxianmao.com/article/online/9759.html
解放双手无尽可能,有问题添加天线猫微信