2011-02-07 49 views
3

我正在用jQuery Mobile框架构建我公司网站的一个版本。尽管通过JavaScript重定向将移动设备用户移动到我们的移动网站相当容易,但我不想阻止用户查看经典网站。经典视图/移动视图开关?

完成此操作的最佳方法是什么?

我们的正常网址是:

us.companyname.com/

我们的移动网站将是:

us.companyname.com/mobile

有一些限制,因为我们没有持有域名,我们的英国同行也这样做,所以在companyname.com级别完成任何事情需要一定的耐心。基本上,如果来自北美的任何人访问companyname.com,他们将自动重定向到us.companyname.com。

我确实可以完全访问我们的网站(主要用PHP &表达式引擎编写,之前我在这里),只要我不搞乱任何东西,我可以自由地做任何事情。

+0

可能重复:http://stackoverflow.com/questions/4181466/view-full-website-not-mobile-version-iphone – 2011-02-07 18:12:46

回答

5

首先,这样的事情,我不会用Javascript /查询做到这一点,导致什么是如果用户没有激活js?做这个服务器端更好。

事情是这样的:

$mobile = array("IPHONE", "IPAD"); 
$flagMobileVersion = false; 
if($_SESSION['version']!="mobile"){ //happens only at first visit 
for($i=0;$i<=count($mobile)-1;$i++){ 
    if(!strrpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $mobile[$i])) 
    { 
     $flagMobileVersion = true; 
     break; 
    } 
} 

if($flagMobileVersion) { 
$_SESSION['version'] = "mobile"; 
Header("www.mydomain.net/mobile"); //on first Visit 
} 
+0

+1,有一个cookie工作或会话变量绝对是最好的选择。我只是意识到,如果用户点击链接返回主页,我的解决方案可能会崩溃,除非您设置更持久的方式来检查用户是否需要移动版本。 – 2011-02-07 18:14:45

0

会是这样的工作:

所有你需要做的是不同的包装声明if,使内部的主网页上window.location重定向代​​码确定noredirect标志未设置为true。唯一的挑战是隔离noredirect查询字符串,但this Stack Overflow question可能会有所帮助。