如果用户浏览到子域,PHP将重定向到移动版本

时间:2012-03-08 20:43:09

标签: php mobile redirect

场景:我的网站设置了php'Mobile Detect'功能。如果检测到移动设备或版本=移动设备(设置cookie),则会显示(通过php)页面的移动版本。如果未检测到移动设备,或者如果版本=完整(设置cookie),则会显示(通过php)网站的完整版本。这一切都发生在我的域的example.com上。

如果他们访问 m .example.com,我想允许用户强制使用该网站的移动版本(如果他们之前已经设置了Cookie版本)。

有没有办法将m.example.com重定向到www.example.com AND 设置版本=移动设备? 我尝试使用我的DNS设置执行此操作,使用从'm'子域到www.example.com/index.php?version=mobile的URL重定向,该网址适用于URL,但是当显示页面时,即使?version = mobile在URL中,我的PHP'Mobile Detect'没有接收到这个,仍然呈现完整版本的页面。

编辑::仅供参考我在Linux服务器上。

3 个答案:

答案 0 :(得分:2)

这是php代码,如果你使用htaccess

,它会更有效率
$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS");
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");

if ($iphone || $android || $palmpre || $ipod || $berry == true) 
{ 
   echo "<script>window.location='http://m.site.com'</script>";
}

答案 1 :(得分:0)

可能现在为时已晚,但我认为问题可能出在cookie上。在您设置cookie时,cookie的值不会更改,稍后会在脚本的en处更改。因此,如果您在脚本开头为cookie分配值“mobile”,然后您的脚本根据它运行,则它的值可能尚未设置为“mobile”。如果你在开头的变量中写入cookie的值然后使用该变量,而不是依赖于cookie,那就更好了。所以cookie首先将变量设置为'full'(默认值)或者从重定向设置NULL,但是然后$ _GET将变量设置为'mobile'并发送命令将cookie设置为'mobile',稍后将设置。然后你的其余代码应该根据变量行事。

答案 2 :(得分:0)

除非您从数据库或其他方式中提取它们,否则您的每个页面都必须包含移动版和完整版的代码(以Pretty URL为例)。然后,您可以将代码编写为IF / ELSE语句。